home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Think Class Libraries / TP TCL->CW TCL v1.1.2.3 / Patch File < prev    next >
Text File  |  1996-04-25  |  375KB  |  11,152 lines

  1. dCompatibility classes
  2. rControl classes
  3. fCArrowPopupPane.p
  4. x78533107,312329531
  5. a{****************************************************************************}
  6. c1,10
  7. a{****************************************************************************}
  8. c12,20
  9. a    kPaneSize = 20;    { height and width of pane }
  10. c19,19
  11. c23,25
  12. a{****************************************************************************}
  13. c27,32
  14. a{****************************************************************************}
  15. c34,43
  16. a{****************************************************************************}
  17. c45,47
  18. a{****************************************************************************}
  19. c49,56
  20. a{****************************************************************************}
  21. c58,60
  22. a{****************************************************************************}
  23. c62,71
  24. a{****************************************************************************}
  25. c73,75
  26. a{****************************************************************************}
  27. c77,86
  28. a{****************************************************************************}
  29. c88,91
  30. a{****************************************************************************}
  31. c93,102
  32. e
  33. fCButton.p
  34. x464440633,285932625
  35. a{****************************************************************************}
  36. c1,17
  37. a{****************************************************************************}
  38. c19,27
  39. a    kFlashDelay = 8;            {  number of ticks to hilte button }
  40. a    kDefaultBtnRounding = 16;    { rounding diameter for default button border }
  41. c27,27
  42. c31,32
  43. a{*** C O N S T R U C T I O N   M E T H O D S ***}
  44. c30,30
  45. a{****************************************************************************}
  46. c36,38
  47. a{****************************************************************************}
  48. c34,34
  49. aPROCEDURE CButton.IButton (CNTLid: Integer;    { CNTL resource ID                    }
  50. a                                anEnclosure: CView;                        { Enclosing view                    }
  51. a                                aSupervisor: CBureaucrat);                    { Boss in chain of command            }
  52. c44,78
  53. a                                        { Set up Frame coordinates            }
  54. c80,80
  55. a                                        { Determine visible portion        }
  56. c82,83
  57. a                                        { This is a subview of enclosure    }
  58. a        itsEnclosure.AddSubview(self);
  59. c86,97
  60. a{****************************************************************************}
  61. c99,102
  62. a{****************************************************************************}
  63. c104,128
  64. a{****************************************************************************}
  65. c130,130
  66. a{****************************************************************************}
  67. c132,137
  68. a{*** C L I C K  H A N D L I N G   M E T H O D S ***}
  69. c125,125
  70. c125,125
  71. a{****************************************************************************}
  72. c142,145
  73. a{****************************************************************************}
  74. c128,128
  75. aPROCEDURE CButton.DoGoodClick (whichPart: Integer); { Will always be inButton            }
  76. c133,133
  77. a                        { Issue the appropriate command    }
  78. c151,155
  79. a{****************************************************************************}
  80. c157,160
  81. a{****************************************************************************}
  82. aPROCEDURE CButton.SetClickCmd (aClickCmd: Longint);    { Specified command number            }
  83. c137,137
  84. c149,149
  85. a        { Set instance variable            }
  86. c166,168
  87. a{****************************************************************************}
  88. c170,173
  89. a{****************************************************************************}
  90. c175,179
  91. a{****************************************************************************}
  92. c181,184
  93. a{****************************************************************************}
  94. c155,155
  95. c187,208
  96. a{****************************************************************************}
  97. c210,213
  98. a{****************************************************************************}
  99. c186,186
  100. c216,225
  101. a                DoGoodClick(kControlButtonPart);
  102. c205,207
  103. c230,230
  104. e
  105. fCCheckBox.p
  106. x241947381,498931489
  107. a{**************************************************}
  108. c1,12
  109. a{**************************************************}
  110. c14,25
  111. a{**************************************************}
  112. c27,30
  113. a{**************************************************}
  114. c32,39
  115. a{**************************************************}
  116. c41,44
  117. a{**************************************************}
  118. c46,55
  119. a{**************************************************}
  120. c57,63
  121. a{**************************************************}
  122. c65,70
  123. a        SetValue(1 - GetControlValue(macControl));
  124. c65,65
  125. c73,77
  126. a{**************************************************}
  127. c79,82
  128. a{**************************************************}
  129. c76,76
  130. c85,86
  131. a        IsChecked := GetControlValue(macControl) = BUTTON_ON;
  132. c88,90
  133. e
  134. fCIconPane.p
  135. x96552240,343629127
  136. a{****************************************************************************}
  137. c1,10
  138. a{****************************************************************************}
  139. c12,17
  140. a    Icons, TCL_Controls;
  141. c16,16
  142. c20,33
  143. a{$IFC MAC68K}
  144. c34,35
  145. a{$ELSEC}
  146. aBEGIN
  147. a    tcl_PlotCIconHandle := PlotCIconHandle(theRect, align, transform, theCIcon);
  148. aEND;
  149. a{$ENDC}
  150. c36,37
  151. a{****************************************************************************}
  152. c39,44
  153. a{****************************************************************************}
  154. c46,59
  155. a{****************************************************************************}
  156. c61,63
  157. a{****************************************************************************}
  158. c65,80
  159. a{****************************************************************************}
  160. c82,84
  161. a{****************************************************************************}
  162. c80,80
  163. c87,91
  164. a        { If color is desired and Color QD is available, then look for    }
  165. a        { a matching 'cicn' resource.                                    }
  166. c86,86
  167. c95,104
  168. a                { set up the bitmap    }
  169. a                                                { point to the mask bits    }
  170. c107,110
  171. a                { TCL 1.1.2 DLP 12/10/91: check for Icon Utilities trap }
  172. c104,104
  173. c113,115
  174. a{****************************************************************************}
  175. c117,122
  176. a{****************************************************************************}
  177. c124,140
  178. a                transform := $4000; { draw selected }
  179. c142,145
  180. a                transform := 0;        { draw normal    }
  181. c147,148
  182. a        IF gSystem.hasColorQD THEN    { Preserve foreground and background    }
  183. c139,139
  184. c151,153
  185. a        ForeColor(blackColor);        { Set default colors for CopyBits        }
  186. c155,173
  187. a                                { dim the icon by dividing all RGB values by 2 }
  188. c175,185
  189. a                                { restore the original color table, free the copy }
  190. c170,170
  191. c188,188
  192. a                                DisposeCTable(ctab);
  193. c190,201
  194. a                CopyBits(cMaskBitMap, qd.thePort^.portBits, theBounds, theBounds, copyMode, NIL);
  195. a                CopyBits(theImage, qd.thePort^.portBits, theBounds, theBounds, srcXor, NIL);
  196. c204,206
  197. a        IF gSystem.hasColorQD THEN    { restore the colors }
  198. c196,196
  199. c209,213
  200. a{****************************************************************************}
  201. c215,217
  202. a{****************************************************************************}
  203. c219,223
  204. a{****************************************************************************}
  205. c225,227
  206. a{****************************************************************************}
  207. c229,233
  208. a{****************************************************************************}
  209. c235,237
  210. a{****************************************************************************}
  211. c239,243
  212. a{****************************************************************************}
  213. c245,248
  214. a{****************************************************************************}
  215. c250,259
  216. a{****************************************************************************}
  217. c261,263
  218. a{****************************************************************************}
  219. c265,293
  220. a{****************************************************************************}
  221. c295,297
  222. a{****************************************************************************}
  223. c299,302
  224. a                DisposeCIcon(cicnH);
  225. c304,309
  226. e
  227. fCPopupMenu.p
  228. x254628646,261239551
  229. a{****************************************************************************}
  230. c1,11
  231. a{****************************************************************************}
  232. c13,18
  233. a    TCL_Controls, Fonts;
  234. c17,17
  235. c21,22
  236. a{****************************************************************************}
  237. c24,31
  238. a{****************************************************************************}
  239. c33,43
  240. a            {)
  241. c45,46
  242. a{             }
  243. c48,49
  244. a        IF (menu = NIL) THEN    { no it hasn't }
  245. c51,51
  246. a                        { add the menu, but don't install into the menu list }
  247. c53,54
  248. a        { NOTE: we never call DisposeMenu( macMenu) because the Bartender        }
  249. a        { has a copy of it AND because there is no way to tell if this            }
  250. a        { menu handle is shared with other objects. We could allocate a        }
  251. a        { private copy, but then the menu would be hidden from the Bartender    }
  252. c49,49
  253. c60,61
  254. a                            { it better have been found now }
  255. c63,71
  256. a{****************************************************************************}
  257. c73,76
  258. a{****************************************************************************}
  259. c65,65
  260. c79,80
  261. a                                        { Never dim menu items        }
  262. c82,83
  263. a    { When autoSelect is TRUE, menu items are automatically checked    }
  264. a    { when selected and selections are remembered. If it is FALSE, then }
  265. a    { menu items should be checked via the UpdateMenus mechanism        }
  266. c71,71
  267. c88,93
  268. a{****************************************************************************}
  269. c95,97
  270. a{****************************************************************************}
  271. c99,100
  272. a        AppendResMenu(macMenu, aResType);
  273. c83,83
  274. c92,93
  275. a{****************************************************************************}
  276. c106,110
  277. a{****************************************************************************}
  278. c112,113
  279. a                                VAR macEvent: EventRecord;
  280. c115,128
  281. a                UpperString(buf, FALSE);
  282. c130,145
  283. a{****************************************************************************}
  284. c147,149
  285. a{****************************************************************************}
  286. c151,155
  287. a{****************************************************************************}
  288. c157,159
  289. a{****************************************************************************}
  290. c161,165
  291. a{****************************************************************************}
  292. c167,169
  293. a{****************************************************************************}
  294. c171,175
  295. a{****************************************************************************}
  296. c177,179
  297. a{****************************************************************************}
  298. c181,186
  299. a{****************************************************************************}
  300. c188,194
  301. a{****************************************************************************}
  302. c196,212
  303. a        {)
  304. c214,218
  305. a{         }
  306. c186,186
  307. c205,205
  308. c222,229
  309. a{****************************************************************************}
  310. c231,235
  311. a{****************************************************************************}
  312. c237,243
  313. a        itemCount := CountMItems(macMenu);
  314. c244,245
  315. a                GetMenuItemText(macMenu, i, itemString);
  316. c247,254
  317. a{****************************************************************************}
  318. c256,258
  319. a{****************************************************************************}
  320. c260,267
  321. a{****************************************************************************}
  322. c269,276
  323. a{****************************************************************************}
  324. c278,288
  325. a    { The caller can specify the initially selected item by passing    }
  326. a    { in its command number. If none is specified, then one is         }
  327. a    { calculated. If autoSelection is on, then the first selected item    }
  328. a    { is used, otherwise the last item chosen is used. Finally, if all    }
  329. a    { else fails, the first menu item is used.                            }
  330. c254,254
  331. c295,312
  332. a                        {  insert into menu list    }
  333. c314,318
  334. a                        { remove from menu list                }
  335. c320,321
  336. a        mID := HiWord(menuResult);            { could be submenu }
  337. c323,324
  338. a        {    FindCmdNumber will return a positive integer if         }
  339. a        {    there is a command for this item or a negative number    }
  340. a        {    if the menu was registered but the item has no command.    }
  341. a        {    If the menu was not registered it will return cmdNull.    }
  342. c286,286
  343. c295,295
  344. c331,332
  345. a        { notify dependents and supervisor of the new selection    }
  346. c334,338
  347. a                            { return the last resulting command }
  348. c340,343
  349. a{****************************************************************************}
  350. c345,348
  351. a{****************************************************************************}
  352. c350,373
  353. a{****************************************************************************}
  354. c375,377
  355. a{****************************************************************************}
  356. c379,382
  357. a        GetMenuItemText(macMenu, item, itemStr);
  358. c342,343
  359. a{****************************************************************************}
  360. c387,389
  361. a{****************************************************************************}
  362. c391,401
  363. a{****************************************************************************}
  364. c403,405
  365. a{****************************************************************************}
  366. c407,411
  367. a{****************************************************************************}
  368. c413,415
  369. a{****************************************************************************}
  370. c417,423
  371. a        {    make sure that item does not have hierarchical menu,    }
  372. a        {    otherwise clearing item mark would lose the submenu        }
  373. c426,427
  374. a                IF fCheckIt THEN
  375. c429,436
  376. e
  377. fCPopupPane.p
  378. x69439093,106703325
  379. a{****************************************************************************}
  380. c1,13
  381. a{****************************************************************************}
  382. c15,24
  383. a{****************************************************************************}
  384. c26,29
  385. a{****************************************************************************}
  386. c31,42
  387. a{****************************************************************************}
  388. c44,46
  389. a{****************************************************************************}
  390. c48,58
  391. a{****************************************************************************}
  392. c60,63
  393. a{****************************************************************************}
  394. c65,71
  395. a        itsMenu.IPopupMenu(menuID, self, fAutoSelect, fMultiSelect);
  396. c73,74
  397. a{****************************************************************************}
  398. c76,78
  399. a{****************************************************************************}
  400. c80,84
  401. a{****************************************************************************}
  402. c86,89
  403. a{****************************************************************************}
  404. c91,96
  405. a{****************************************************************************}
  406. c98,102
  407. a{****************************************************************************}
  408. c104,115
  409. a{****************************************************************************}
  410. c117,120
  411. a{****************************************************************************}
  412. c122,129
  413. a{****************************************************************************}
  414. c131,135
  415. a{****************************************************************************}
  416. c137,141
  417. a{****************************************************************************}
  418. c143,147
  419. a{****************************************************************************}
  420. c149,150
  421. a            { null method }
  422. c140,141
  423. a{****************************************************************************}
  424. c155,159
  425. a{****************************************************************************}
  426. c161,171
  427. a{****************************************************************************}
  428. c173,177
  429. a{****************************************************************************}
  430. c179,181
  431. a        IF NOT IsActive THEN    { TCL 1.1.2 DLP 12/16/91 }
  432. c183,183
  433. a                PenPat(qd.gray);
  434. c185,190
  435. a{****************************************************************************}
  436. c192,194
  437. a{****************************************************************************}
  438. c196,201
  439. a{****************************************************************************}
  440. c203,206
  441. a{****************************************************************************}
  442. c180,180
  443. c209,214
  444. a{****************************************************************************}
  445. c216,218
  446. a{****************************************************************************}
  447. c190,190
  448. c221,227
  449. e
  450. fCRadioControl.p
  451. x194209077,102370577
  452. a{****************************************************************************}
  453. c1,13
  454. a{****************************************************************************}
  455. c15,24
  456. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  457. c24,24
  458. a{****************************************************************************}
  459. c28,30
  460. a{****************************************************************************}
  461. c32,38
  462. a{****************************************************************************}
  463. c40,42
  464. a{****************************************************************************}
  465. c44,52
  466. a{****************************************************************************}
  467. c54,58
  468. a{****************************************************************************}
  469. aPROCEDURE CRadioControl.DoGoodClick (whichPart: Integer);    { Will always be inButton            }
  470. c61,70
  471. e
  472. fCRadioGroupPane.p
  473. x136533251,203658229
  474. a{****************************************************************************}
  475. c1,15
  476. a{****************************************************************************}
  477. c17,26
  478. a{****************************************************************************}
  479. c28,30
  480. a{****************************************************************************}
  481. c32,45
  482. a{****************************************************************************}
  483. c47,49
  484. a{****************************************************************************}
  485. c51,58
  486. a{****************************************************************************}
  487. c60,66
  488. a{****************************************************************************}
  489. c68,84
  490. a{****************************************************************************}
  491. c86,88
  492. a{****************************************************************************}
  493. c82,82
  494. c91,107
  495. a                Assert(member(radio, CRadioControl));
  496. c109,114
  497. a{****************************************************************************}
  498. c116,118
  499. a{****************************************************************************}
  500. c112,112
  501. c121,130
  502. e
  503. fCStdPopupPane.p
  504. x203373363,471006488
  505. a{****************************************************************************}
  506. c1,10
  507. a{****************************************************************************}
  508. c12,22
  509. a    Script, Fonts
  510. a{$IFC POWERPC}
  511. a    , MixedMode
  512. c171,171
  513. a    ;
  514. c24,27
  515. a    kArrowWidth = 16;        { width needed for popup arrow}
  516. a    kArrowRightInset = 3;    { inset of arrow with right edge of border}
  517. a    kTitleGap = 6;            { gap between end of title and popup box }
  518. a    kStdPopupHeight = 21;    { standard height for popup}
  519. a    kCheckGap = 14;            { Pixels between left edge of menu    }
  520. a                        { and left edge of text}
  521. a    kBorderWidth = 2;        { width of border, 1 pixel frame + i pixel shadow}
  522. c26,26
  523. a    kMinTicks = 8;    { number of ticks to flash title for feedback for keyboard shortcut }
  524. c27,27
  525. c35,35
  526. a{ if INSTALL_MENU_HOOK is true the menu  defproc will be patched}
  527. a{ to provide the standard popup menu width}
  528. c35,35
  529. c35,35
  530. c43,44
  531. a{$IFC POWERPC}
  532. aPROCEDURE BuildRoutineDescriptor(
  533. a                    VAR aDescriptor    : RoutineDescriptor;
  534. a                    procInfo        : ProcInfoType;
  535. a                    theProc            : ProcPtr); C; EXTERNAL;
  536. c35,35
  537. c171,172
  538. c45,46
  539. a{$IFC MAC68K}
  540. c47,51
  541. a{$ELSEC}
  542. c47,47
  543. a            addr: RoutineDescriptor;
  544. c50,51
  545. c171,171
  546. c52,60
  547. a{$IFC MAC68K}
  548. c61,62
  549. a{$ELSEC}
  550. aBEGIN
  551. a    CallMenuDefProc(message, menu, menuRect, hitPt, whichItem, MenuDefUPP(defproc^));
  552. aEND;
  553. c171,172
  554. c64,70
  555. a{****************************************************************************}
  556. c72,76
  557. a{****************************************************************************}
  558. c78,84
  559. a        { We need to know if this is the first time we're installing}
  560. a        { this menu so we install the menu hook only once.}
  561. c87,93
  562. a{****************************************************************************}
  563. c95,97
  564. a{****************************************************************************}
  565. c99,116
  566. a{****************************************************************************}
  567. c118,122
  568. a{****************************************************************************}
  569. c116,116
  570. c125,139
  571. a{$IFC INSTALL_MENU_HOOK & POWERPC}
  572. aVAR
  573. a        routine:    tMenuHook;
  574. c171,172
  575. a{****************************************************************************}
  576. c141,149
  577. a{****************************************************************************}
  578. c151,152
  579. a        theHook:    tMenuHookHndl;
  580. a        menu:        MenuHandle;
  581. a{$IFC POWERPC}
  582. a        err:        OSErr;
  583. c171,171
  584. c155,158
  585. c160,161
  586. a{$IFC MAC68K}
  587. c159,159
  588. c163,163
  589. a        theHook^^.jmp := $4EF9;                { JMP instruction }
  590. c165,166
  591. a{$ELSEC}
  592. a        BuildRoutineDescriptor(routine.addr, uppMenuDefProcInfo, @MenuProc);
  593. a        routine.realMenuProc := menu^^.menuProc;
  594. a        err := PtrToHand(@routine, Handle(theHook), sizeof(tMenuHook));
  595. c171,171
  596. c167,168
  597. a{$IFC MAC68K}
  598. c169,169
  599. c171,171
  600. c171,174
  601. a{****************************************************************************}
  602. c176,179
  603. a{****************************************************************************}
  604. c181,192
  605. a        { fontAscent is used when drawing the popup title and selected item }
  606. c194,196
  607. a        { calculte width such that title, the longest menu item, and        }
  608. a        { the down arrow all fit correctly                                    }
  609. c199,207
  610. a                { calculate the height given the chosen font, but make sure        }
  611. a                { the height is at least an appropriate minimum size                }
  612. c210,218
  613. a            { calculate the rect to hilite when the menu pops up, as per HIG    }
  614. c220,221
  615. a        { calculate the position to draw the down arrow SICN                }
  616. c200,200
  617. c224,227
  618. a{****************************************************************************}
  619. c229,231
  620. a{****************************************************************************}
  621. c233,244
  622. a        itsPopupBox.IPane(self, self, bWidth, height - kBorderWidth - 1, popupPt.h, 1, sizFIXEDSTICKY, sizFIXEDSTICKY);
  623. c221,221
  624. c247,252
  625. a{****************************************************************************}
  626. c254,258
  627. a{****************************************************************************}
  628. c260,266
  629. a                            { is the click in the popup box?        }
  630. c268,273
  631. a                            { pass the popupPt as the hitPt }
  632. c246,246
  633. c276,280
  634. a{****************************************************************************}
  635. c282,285
  636. a{****************************************************************************}
  637. c287,290
  638. a        { the text is inside the popup box, so invalidate the interior    }
  639. a        { minus the portion used for the down arrow icon                }
  640. c275,275
  641. c294,298
  642. a{ number of ticks to flash title for feedback }
  643. a{****************************************************************************}
  644. c301,305
  645. a{****************************************************************************}
  646. c275,275
  647. c308,309
  648. a                                VAR macEvent: EventRecord);
  649. c288,288
  650. c312,326
  651. a{****************************************************************************}
  652. c328,330
  653. a{****************************************************************************}
  654. c332,339
  655. a{****************************************************************************}
  656. c341,343
  657. a{****************************************************************************}
  658. c345,353
  659. a{****************************************************************************}
  660. c355,358
  661. a{****************************************************************************}
  662. c360,373
  663. a{****************************************************************************}
  664. c375,378
  665. a{****************************************************************************}
  666. c380,382
  667. a        itsPopupBox.GetBorder.SetPattern(qd.black);
  668. c338,339
  669. a{****************************************************************************}
  670. c387,390
  671. a{****************************************************************************}
  672. c392,394
  673. a        itsPopupBox.GetBorder.SetPattern(qd.gray);
  674. c352,353
  675. c353,353
  676. a{ This is the custom menu defproc that is called by the Menu Manager    }
  677. a{ All it does is call the original defproc and then check if the        }
  678. a{ message was mSizeMsg. If it was, it patches the menuWidth to allow    }
  679. a{ room for the down arrow                                                }
  680. c353,353
  681. c404,415
  682. a                { get handle to the real menu proc }
  683. c373,373
  684. c418,430
  685. e
  686. fTCL_Controls.p
  687. x443301951,329412429
  688. a{****************************************************************************}
  689. c1,6
  690. a{****************************************************************************}
  691. c8,13
  692. a    Icons, TCL;
  693. c12,12
  694. c15,16
  695. a{****************************************************************************}
  696. c19,29
  697. a{****************************************************************************}
  698. c31,59
  699. a    BUTTON_OFF = 0;        { Off setting                        }
  700. a    BUTTON_ON = 1;        { On setting                        }
  701. c57,57
  702. c57,57
  703. a{**************************************************}
  704. c65,68
  705. a{**************************************************}
  706. c62,62
  707. c71,74
  708. a                                { Instance Methods }
  709. c70,70
  710. c77,91
  711. a{****************************************************************************}
  712. c93,93
  713. a{****************************************************************************}
  714. c95,111
  715. a{****************************************************************************}
  716. c113,113
  717. a{****************************************************************************}
  718. c111,111
  719. c116,142
  720. a{****************************************************************************}
  721. c144,145
  722. a{****************************************************************************}
  723. c134,134
  724. c148,149
  725. a    kIconPixels = 32;    { ICON is 32 pixels square        }
  726. a    kIconBytes = 128;    { ICON is 128 bytes of data    }
  727. a    kIconRowBytes = 4;    { 32 b&w pixels is 4 bytes        }
  728. c134,134
  729. c154,196
  730. a    {    Class Variables    }
  731. c186,186
  732. a    { This bit map and buffer are used for drawing the icon in        }
  733. a    { either normal or hilite mode                                    }
  734. c186,186
  735. c202,205
  736. a{****************************************************************************}
  737. c207,208
  738. a{****************************************************************************}
  739. c186,187
  740. c195,195
  741. a            { modifier passed to SelectItem & SelectItemName }
  742. c195,195
  743. c215,218
  744. a    tPMSelectAction = (pmForceOn,         { check item - only allowed option for single selection menus }
  745. a        pmToggle,                         { toggle the item (multiSelect only) }
  746. a        pmForceOff                        { uncheck item (multiSelect only }
  747. c222,225
  748. a            macMenu: MenuHandle;        { handle to menu                        }
  749. a            menuID: Integer;            { ID of the menu                        }
  750. a            lastCmd: Longint;            { last command issued                    }
  751. a            autoSelect: Boolean;        { automatically checks items if TRUE    }
  752. a            multiSelect: Boolean;        { allow multiple checked items if TRUE    }
  753. a            firstSelection: Integer;     { first selected menu item number        }
  754. c198,198
  755. c233,238
  756. a                                        VAR macEvent: EventRecord;
  757. c240,264
  758. a            { Change protocol for CPopupMenu }
  759. c232,232
  760. a                { a new item was selected. Info parameter is    }
  761. a                { a pointer (IntegerPtr) to the new item number}
  762. c232,232
  763. c270,272
  764. a{****************************************************************************}
  765. c274,275
  766. a{****************************************************************************}
  767. c262,262
  768. c278,323
  769. a    { CPopupPane template }
  770. c323,323
  771. c326,334
  772. a{****************************************************************************}
  773. c336,337
  774. a {****************************************************************************}
  775. c323,323
  776. c340,368
  777. a                                        VAR macEvent: EventRecord);
  778. c360,360
  779. c371,385
  780. a{ CStdPopupPane template }
  781. c342,342
  782. c388,390
  783. a            hAutosizing: Integer;    { auto-size horizontally?}
  784. a            vAutosizing: Integer;    { auto-size vertically?}
  785. c384,384
  786. c394,397
  787. a        { Use for width or height parameters of IStdPopupPane     }
  788. a        { for automatic sizing of popup                        }
  789. c352,352
  790. c401,402
  791. a{****************************************************************************}
  792. c404,405
  793. a{****************************************************************************}
  794. c388,388
  795. c408,430
  796. e
  797. o
  798. rCore classes
  799. fCAbstractText.p
  800. x113167812,91801788
  801. a{****************************************************************************}
  802. c1,35
  803. a{****************************************************************************}
  804. c37,47
  805. a    Script, Fonts;
  806. c46,46
  807. c49,49
  808. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  809. c49,49
  810. a{****************************************************************************}
  811. c54,56
  812. a{****************************************************************************}
  813. c58,80
  814. a{****************************************************************************}
  815. c82,84
  816. a {****************************************************************************}
  817. c80,80
  818. c87,109
  819. a{*** D I S P L A Y   M E T H O D S ***}
  820. c102,102
  821. a{****************************************************************************}
  822. c113,116
  823. a{****************************************************************************}
  824. c118,136
  825. a        { Here we assume that the vertical units are either pixels    }
  826. a        { or lines                                                    }
  827. c134,134
  828. c140,141
  829. a                                            { don't try to scroll if 1 line or    }
  830. a                                            { less is visible                    }
  831. c144,146
  832. a                { set selStart to the bottom of the first selected line     }
  833. c148,149
  834. a                { set selEnd to the top of the last selected line            }
  835. c151,157
  836. a                IF vSpan <= 1 THEN            { don't try to scroll if 1 line or    }
  837. a                    EXIT(ScrollToSelection);{ less is visible                    }
  838. c146,146
  839. c161,176
  840. a{*** T E X T   S P E C I F I C A T I O N   M E T H O D S ***}
  841. c160,160
  842. a{****************************************************************************}
  843. c180,182
  844. a{****************************************************************************}
  845. c184,185
  846. a                { Pascal string, so text starts at    }
  847. a                {   byte one, and the number of    }
  848. a                {   characters is in byte zero        }
  849. c176,176
  850. c190,192
  851. a{****************************************************************************}
  852. c194,197
  853. a{****************************************************************************}
  854. c199,200
  855. a        saveHState: SignedByte;    { Original handle attributes        }
  856. c176,176
  857. c185,185
  858. a                                { Save state of text handle        }
  859. c176,176
  860. c206,206
  861. a                                { Lock text in place                }
  862. c208,208
  863. a                                { Another method does the work        }
  864. c189,189
  865. c211,211
  866. a                                { Restore state of text handle        }
  867. c213,216
  868. a{****************************************************************************}
  869. c218,220
  870. a{****************************************************************************}
  871. aPROCEDURE CAbstractText.SetTextPtr (textPtr: Ptr;    { Pointer to some text                    }
  872. a                                numChars: Longint); { Number of characters in the text        }
  873. c203,203
  874. c225,227
  875. a{****************************************************************************}
  876. c229,236
  877. a{****************************************************************************}
  878. c238,242
  879. a{*** T E X T   C H A R A C T E R I S T I C S   M E T H O D S ***}
  880. c205,205
  881. a{****************************************************************************}
  882. c246,248
  883. a{****************************************************************************}
  884. c250,255
  885. a{****************************************************************************}
  886. c257,259
  887. a{****************************************************************************}
  888. c261,262
  889. a        fontNum: Integer;    { Corresponding font number            }
  890. c224,224
  891. a                        { Call utility to look up number for    }
  892. a                        {   this font                            }
  893. c267,267
  894. a                        { Legal font numbers are positive        }
  895. c269,273
  896. a{****************************************************************************}
  897. c275,277
  898. a{****************************************************************************}
  899. c279,283
  900. a{****************************************************************************}
  901. c285,287
  902. a{****************************************************************************}
  903. c289,293
  904. a{****************************************************************************}
  905. c295,297
  906. a{****************************************************************************}
  907. c299,303
  908. a{****************************************************************************}
  909. c305,309
  910. a{****************************************************************************}
  911. c311,315
  912. a{****************************************************************************}
  913. c317,322
  914. a{****************************************************************************}
  915. c324,328
  916. a{****************************************************************************}
  917. c330,334
  918. a{****************************************************************************}
  919. c336,340
  920. a{****************************************************************************}
  921. c342,344
  922. a{****************************************************************************}
  923. c346,350
  924. a{****************************************************************************}
  925. c352,354
  926. a{****************************************************************************}
  927. c356,360
  928. a{****************************************************************************}
  929. c362,365
  930. a{****************************************************************************}
  931. c367,371
  932. a{****************************************************************************}
  933. c373,376
  934. a{****************************************************************************}
  935. c378,383
  936. a{****************************************************************************}
  937. c385,396
  938. a{****************************************************************************}
  939. c398,404
  940. a{****************************************************************************}
  941. c406,408
  942. a{****************************************************************************}
  943. c410,415
  944. a{*** C A L I B R A T I N G   M E T H O D S ***}
  945. c350,350
  946. a{****************************************************************************}
  947. c419,423
  948. a{****************************************************************************}
  949. c425,430
  950. a{****************************************************************************}
  951. c432,436
  952. a{****************************************************************************}
  953. c438,454
  954. a                            { use height of line 1 as height of all lines }
  955. c383,383
  956. c457,465
  957. a                                { find the line at top of frame    }
  958. c467,470
  959. a                                { find the line at bottom of frame    }
  960. c472,484
  961. a                            { we now know how many full lines will fit. resize the frame,    }
  962. a                            { while ensuring that at least one line is visible                }
  963. c415,415
  964. c488,501
  965. a{****************************************************************************}
  966. c503,506
  967. a{****************************************************************************}
  968. c508,512
  969. a{****************************************************************************}
  970. c514,520
  971. a{****************************************************************************}
  972. c522,526
  973. a{****************************************************************************}
  974. c528,530
  975. a{****************************************************************************}
  976. c532,536
  977. a{*** C O M M A N D   M E T H O D S ***}
  978. c456,456
  979. a{****************************************************************************}
  980. c540,544
  981. a{****************************************************************************}
  982. c546,575
  983. a                                Assert(wantsClicks = TRUE);
  984. c577,585
  985. a                            Assert(wantsClicks = TRUE);
  986. c587,627
  987. a{****************************************************************************}
  988. c629,631
  989. a{****************************************************************************}
  990. c633,661
  991. a        { The remaining menu updating involves style and formatting}
  992. a        { commands. Don't do it if the text is not stylable.}
  993. c583,583
  994. c665,667
  995. a        { Get selection returns the "current" text attributes. For     }
  996. a        { single-style text these are the global attributes and are    }
  997. a        { by definition always continous. For multi-style text, it        }
  998. a        { returns the attributes of the selections, and the returned    }
  999. a        { flags indicate which are continuous                            }
  1000. c583,583
  1001. c583,583
  1002. c675,680
  1003. a        { lastFontNum is the last font number seen from UpdateMenus }
  1004. a        { lastFontCmd is the cmd # corresponding to lastFontNum     }
  1005. a        { if lastFontNum == style.tsFont, then we don't need to     }
  1006. a        { lookup the font name in the menu again                     }
  1007. c583,583
  1008. c686,696
  1009. a            { Font size of zero means the system default size,}
  1010. a            { but we need a real number for the size menu.}
  1011. c593,593
  1012. c700,702
  1013. a            { lastTextSize is the last text size seen from UpdateMenus    }
  1014. a            { lastSizeCmd is the cmd # corresponding to lastFontNum    }
  1015. a            { if lastTextSize == style.tsSize, then we don't need to    }
  1016. a            { lookup the size in the menu again                        }
  1017. c615,615
  1018. c708,762
  1019. a{****************************************************************************}
  1020. c764,774
  1021. a{****************************************************************************}
  1022. c776,777
  1023. a                                VAR macEvent: EventRecord);
  1024. c779,787
  1025. a            { Don't try to insert any command keys into the text,    }
  1026. a            { pass them along the command chain                    }
  1027. c674,674
  1028. c791,833
  1029. a{****************************************************************************}
  1030. c835,838
  1031. a{****************************************************************************}
  1032. c840,841
  1033. a                                VAR macEvent: EventRecord);
  1034. c762,762
  1035. c784,784
  1036. c845,849
  1037. a{****************************************************************************}
  1038. c851,854
  1039. a{****************************************************************************}
  1040. c856,861
  1041. a{****************************************************************************}
  1042. c863,866
  1043. a{****************************************************************************}
  1044. c868,899
  1045. a{****************************************************************************}
  1046. c901,904
  1047. a{****************************************************************************}
  1048. c906,913
  1049. a{****************************************************************************}
  1050. c915,917
  1051. a{****************************************************************************}
  1052. c919,923
  1053. a{****************************************************************************}
  1054. c925,927
  1055. a{****************************************************************************}
  1056. aPROCEDURE CAbstractText.AdjustCursor (where: Point;    { Mouse location in Window coords    }
  1057. c930,934
  1058. a{****************************************************************************}
  1059. c936,938
  1060. a{****************************************************************************}
  1061. c940,944
  1062. a{****************************************************************************}
  1063. c946,948
  1064. a{****************************************************************************}
  1065. c950,954
  1066. a{****************************************************************************}
  1067. c956,958
  1068. a{****************************************************************************}
  1069. c960,964
  1070. a{****************************************************************************}
  1071. c966,970
  1072. a{****************************************************************************}
  1073. c972,982
  1074. a        { if the text is selectable, then it can be the gopher }
  1075. c847,847
  1076. c985,987
  1077. a{****************************************************************************}
  1078. c989,992
  1079. a{****************************************************************************}
  1080. c994,1000
  1081. a{****************************************************************************}
  1082. c1002,1004
  1083. a{****************************************************************************}
  1084. c1006,1010
  1085. a{****************************************************************************}
  1086. c1012,1015
  1087. a{****************************************************************************}
  1088. c1017,1021
  1089. a{****************************************************************************}
  1090. c1023,1025
  1091. a{****************************************************************************}
  1092. c1027,1033
  1093. a{****************************************************************************}
  1094. c1035,1037
  1095. a{****************************************************************************}
  1096. c1039,1050
  1097. a{****************************************************************************}
  1098. c1052,1054
  1099. a{****************************************************************************}
  1100. c1056,1062
  1101. a{****************************************************************************}
  1102. c1064,1067
  1103. a{****************************************************************************}
  1104. c1069,1084
  1105. a        newTask.ITextEditTask(self, editCmd, cFirstTaskIndex);
  1106. c934,934
  1107. c1087,1091
  1108. a{****************************************************************************}
  1109. c1093,1096
  1110. a{****************************************************************************}
  1111. c1098,1119
  1112. a        newTask.ITextStyleTask(self, styleCmd, taskIndex);
  1113. c964,964
  1114. c1087,1087
  1115. c1123,1125
  1116. a{****************************************************************************}
  1117. c1127,1133
  1118. a{****************************************************************************}
  1119. c1135,1143
  1120. a                { nothing in this method moves memory    }
  1121. c1145,1151
  1122. a                    { must use CharByte to get character.            }
  1123. a                    { CharByte does not move memory                }
  1124. c1000,1000
  1125. c1155,1182
  1126. a{****************************************************************************}
  1127. c1184,1190
  1128. a{****************************************************************************}
  1129. c1192,1199
  1130. a                    { nothing in this method moves memory    }
  1131. c1145,1145
  1132. c1202,1208
  1133. a                { must use CharByte to get character.            }
  1134. a                { CharByte does not move memory                }
  1135. c1050,1050
  1136. c1212,1234
  1137. a{****************************************************************************}
  1138. c1236,1236
  1139. a{****************************************************************************}
  1140. c1238,1251
  1141. a            { force pageHeight to include only full lines    }
  1142. c1084,1084
  1143. a                            { use height of line 1 as height of all lines }
  1144. c1255,1258
  1145. a                { CPanorama will paginate into equal sized strips given    }
  1146. a                { the new page height                                        }
  1147. c1261,1292
  1148. e
  1149. fCAppleEvent.p
  1150. x283854181,383927741
  1151. a{****************************************************************************}
  1152. c1,12
  1153. a{****************************************************************************}
  1154. c14,22
  1155. a{****************************************************************************}
  1156. c24,32
  1157. a{****************************************************************************}
  1158. aPROCEDURE CAppleEvent.IAppleEvent (VAR aeEvent: AppleEvent;
  1159. a                                VAR aeReply: AppleEvent;
  1160. c36,38
  1161. a        self.theEvent := aeEvent;
  1162. a        self.theReply := aeReply;
  1163. a        self.theRefCon := aeRefCon;
  1164. a        self.eventClass := aeEventClass;
  1165. a        self.eventID := aeEventID;
  1166. c44,46
  1167. a    { canInteract indicates whether user interaction has been}
  1168. a    { requested and approved.}
  1169. c46,46
  1170. c50,51
  1171. a    { errCode is used to store the error code ultimately}
  1172. a    { returned back to the AppleEvent mgr, which in turn will}
  1173. a    { pass it to the sender. It is initialized to errAEEventNotHandled}
  1174. a    { to indicate that the event has not yet been handled. If no object in}
  1175. a    { the chain of command handles an event, then errCode will}
  1176. a    { not be changed, and the sender will be informed that the}
  1177. a    { event wasn't handled.}
  1178. c46,46
  1179. c60,62
  1180. a{****************************************************************************}
  1181. c64,66
  1182. a{****************************************************************************}
  1183. c68,72
  1184. a{****************************************************************************}
  1185. c74,76
  1186. a{****************************************************************************}
  1187. c78,82
  1188. a{****************************************************************************}
  1189. c84,90
  1190. a{****************************************************************************}
  1191. c92,96
  1192. a{****************************************************************************}
  1193. c98,101
  1194. a{****************************************************************************}
  1195. c103,107
  1196. a{****************************************************************************}
  1197. c109,111
  1198. a{****************************************************************************}
  1199. c113,117
  1200. a{****************************************************************************}
  1201. c119,121
  1202. a{****************************************************************************}
  1203. c123,128
  1204. a        event := self.theEvent;
  1205. c130,133
  1206. a{****************************************************************************}
  1207. c135,141
  1208. a{****************************************************************************}
  1209. c143,196
  1210. a{****************************************************************************}
  1211. c198,206
  1212. a{****************************************************************************}
  1213. c208,212
  1214. a{****************************************************************************}
  1215. c214,216
  1216. a{****************************************************************************}
  1217. c218,222
  1218. a{****************************************************************************}
  1219. c224,230
  1220. a{****************************************************************************}
  1221. c232,241
  1222. a{****************************************************************************}
  1223. c243,258
  1224. a{****************************************************************************}
  1225. c260,264
  1226. a    { Don't call AEInteractWithUser again if it has already been}
  1227. a    { requested and approved.}
  1228. c222,222
  1229. c268,269
  1230. a                IF (self.idleProc <> NIL) THEN
  1231. a                    proc := self.idleProc
  1232. c272,283
  1233. e
  1234. fCApplication.p
  1235. x116835722,93277686
  1236. a{****************************************************************************}
  1237. c1,24
  1238. a{****************************************************************************}
  1239. c26,36
  1240. a    Devices, Fonts, GestaltEqu, LowMem, OSUtils, Traps, MethTableUtils, Script,
  1241. a    SegLoad, ToolUtils, PasLibIntf;
  1242. c39,43
  1243. a    { make this visible to TCL.lib }
  1244. c45,47
  1245. a{$IFC MAC68K}
  1246. c48,53
  1247. c294,295
  1248. a{*** I N I T I A L I Z A T I O N    M E T H O D S ***}
  1249. a{****************************************************************************}
  1250. c58,60
  1251. a{****************************************************************************}
  1252. c54,55
  1253. aPROCEDURE CApplication.IApplication (extraMasters: Integer;    { Number of additional master        }
  1254. a                                                        {   blocks to allocate            }
  1255. a                                aRainyDayFund: Longint;{ Bytes of memory to reserve for    }
  1256. a                                                        {   a rainy day                    }
  1257. c62,62
  1258. a                                aCriticalBalance: Longint;{ Bytes to save for critical         }
  1259. a                                                        { operations                    }
  1260. c62,62
  1261. a                                aToolboxBalance: Longint); { Bytes to savefor the toolbox }
  1262. c73,76
  1263. a        gApplication := self;    { initialize the global pointer }
  1264. c62,62
  1265. a(*        MenuDisable := LongPtr($B54);    { Low-memory global    }*)
  1266. c80,81
  1267. a        { indicate initialization phase }
  1268. c83,84
  1269. a        { Initialize Toolbox Managers        }
  1270. c86,87
  1271. a        { Fine tune the Memory Manager        }
  1272. c89,107
  1273. a        { We want an early first Idle        }
  1274. c109,110
  1275. a        { Initialize cMaxSleepTime to 10 seconds. This is an arbitrary}
  1276. a        { value which gives screen savers, clocks, etc. some time,}
  1277. a        { without stealing too much time from other processes.}
  1278. a        { Applications can override it by simply assigning a new value to it.}
  1279. c94,94
  1280. c116,117
  1281. a                { Cursors                            }
  1282. c119,128
  1283. a        gGopher := self;
  1284. c130,138
  1285. a{****************************************************************************}
  1286. c140,142
  1287. a{****************************************************************************}
  1288. c144,146
  1289. a    { Standard initialization calls    }
  1290. c133,133
  1291. a        InitGraf(@qd.thePort);
  1292. c150,157
  1293. a{****************************************************************************}
  1294. c159,161
  1295. a{****************************************************************************}
  1296. aPROCEDURE CApplication.InitMemory (extraMasters: Integer; { Number of additional master        }
  1297. a                                                    {   blocks to allocate                }
  1298. c133,133
  1299. a                                aRainyDayFund: Longint;{ Bytes of memory to reserve for    }
  1300. a                                                        {   a rainy day                    }
  1301. c133,133
  1302. a                                aCriticalBalance: Longint;{ Bytes to reserve for critical    }
  1303. a                                                        { operations                        }
  1304. c133,133
  1305. a                                aToolboxBalance: Longint);    { Bytes to reserve for those toolbox }
  1306. a                                                            { routines that don't fail gracefully }
  1307. c133,133
  1308. c145,145
  1309. a        Assert(aRainyDayFund >= aCriticalBalance);
  1310. a        Assert(aCriticalBalance >= aToolboxBalance);
  1311. c136,136
  1312. a                    { Grow heap to maximum size to        }
  1313. a        MaxApplZone;    {   help prevent fragmentation        }
  1314. c136,136
  1315. a        { Call MoreMasters to allocate extra master pointers.  }
  1316. a        { Experiment to determine how many master pointers the }
  1317. a        { application uses under session of heavy use.            }
  1318. c138,138
  1319. c186,190
  1320. a        SetGrowZone(@GrowZoneFunc); { Traps out of memory conditions    }
  1321. c146,146
  1322. c193,194
  1323. a                                { Set instance variables            }
  1324. c196,203
  1325. a        rainyDay := NewHandleCanFail(rainyDayFund); { Reserve a block of memory }
  1326. c205,208
  1327. a{****************************************************************************}
  1328. c210,212
  1329. a{****************************************************************************}
  1330. c165,165
  1331. c215,220
  1332. a{$IFC MAC68K}
  1333. c221,226
  1334. c294,294
  1335. c207,207
  1336. c228,233
  1337. a    {
  1338. c235,235
  1339. a        origETS := Longint(NGetTrapAddress(trap, ToolTrap));
  1340. a        NSetTrapAddress(UniversalProcPtr(@ETS_Patch), trap, ToolTrap);
  1341. c238,238
  1342. a        origLoadSeg := Longint(NGetTrapAddress(trap, ToolTrap));
  1343. a        NSetTrapAddress(UniversalProcPtr(@LoadSeg_Patch), trap, ToolTrap);
  1344. a    }
  1345. c185,185
  1346. c207,208
  1347. a{****************************************************************************}
  1348. c245,247
  1349. a{****************************************************************************}
  1350. c192,192
  1351. c250,253
  1352. a    {
  1353. c254,256
  1354. a                NSetTrapAddress(UniversalProcPtr(origETS), trap, ToolTrap);
  1355. c258,258
  1356. a                NSetTrapAddress(UniversalProcPtr(origLoadSeg), trap, ToolTrap);
  1357. c260,260
  1358. a    }
  1359. c207,208
  1360. a{****************************************************************************}
  1361. c264,272
  1362. a{****************************************************************************}
  1363. c274,278
  1364. a        { example of referencing classes used only with NewByName }
  1365. c280,291
  1366. a        { etc... }
  1367. c293,297
  1368. a{****************************************************************************}
  1369. c299,301
  1370. a{****************************************************************************}
  1371. c303,308
  1372. a        gSystem.hasGestalt := TrapAvailable(_Gestalt);
  1373. c310,311
  1374. a        gSystem.scriptsInstalled := 1; { assume only Roman script    }
  1375. c249,249
  1376. c314,340
  1377. a        ELSE    { If we don't have Gestalt, then we can't have any System 7 features    }
  1378. c316,316
  1379. c343,347
  1380. a                    gSystem.scriptsInstalled := GetScriptManagerVariable(smEnabled);
  1381. c326,327
  1382. c296,297
  1383. a{****************************************************************************}
  1384. c354,359
  1385. a{****************************************************************************}
  1386. c291,291
  1387. c362,363
  1388. a    { Use a standard Desktop            }
  1389. c291,291
  1390. c366,366
  1391. a        gDesktop.IDesktop(self);
  1392. c296,297
  1393. a{****************************************************************************}
  1394. c371,373
  1395. a{****************************************************************************}
  1396. c375,376
  1397. a    { Use standard Clipboard            }
  1398. c378,378
  1399. a        gClipboard.IClipboard(self, TRUE);
  1400. c351,352
  1401. a{****************************************************************************}
  1402. c383,387
  1403. a{****************************************************************************}
  1404. c389,390
  1405. a    { Use standard Decorator            }
  1406. c392,395
  1407. a{****************************************************************************}
  1408. c397,400
  1409. a{****************************************************************************}
  1410. c402,410
  1411. a{****************************************************************************}
  1412. c412,415
  1413. a{****************************************************************************}
  1414. c350,350
  1415. c418,423
  1416. a{****************************************************************************}
  1417. c425,428
  1418. a{****************************************************************************}
  1419. c430,434
  1420. a{****************************************************************************}
  1421. c436,438
  1422. a{****************************************************************************}
  1423. c440,441
  1424. a    {* Get File Parameters *}
  1425. c352,352
  1426. a        sfNumTypes := -1;            { Display all files                }
  1427. a        sfFileTypes[0] := '????';    { Just put something here            }
  1428. a        sfFileFilter := NIL;        { No extra filtering of files        }
  1429. a        sfGetDLOGHook := NIL;        { No special handling of items        }
  1430. a        sfGetDLOGid := getDlgID;    { Use built-in get dialog box        }
  1431. a        sfGetDLOGFilter := NIL;    { No special event processing        }
  1432. c361,361
  1433. c368,369
  1434. a{****************************************************************************}
  1435. c454,456
  1436. a{****************************************************************************}
  1437. c458,460
  1438. a        AppendResMenu(GetMenuHandle(MENUapple), 'DRVR');
  1439. c462,464
  1440. a{*** A C T I O N   M E T H O D S ***}
  1441. c365,365
  1442. c369,369
  1443. a{****************************************************************************}
  1444. c469,470
  1445. a{A subordinate is notifying the Application that a task has been completed . }
  1446. a{****************************************************************************}
  1447. aPROCEDURE CApplication.Notify (theTask: CTask);    { The completed task        }
  1448. c369,369
  1449. c376,376
  1450. c476,480
  1451. a{****************************************************************************}
  1452. c482,485
  1453. a{****************************************************************************}
  1454. aPROCEDURE CApplication.DoKeyDown (theChar: Char;            { The associated character            }
  1455. a                                keyCode: Byte;            { Code for the associated key        }
  1456. a                                VAR macEvent: EventRecord);{ Key down event record            }
  1457. c390,390
  1458. c381,381
  1459. a    { Null Method                        }
  1460. c394,395
  1461. a{****************************************************************************}
  1462. c496,498
  1463. a{****************************************************************************}
  1464. aPROCEDURE CApplication.DoAutoKey (theChar: Char;            { The associated character            }
  1465. a                                keyCode: Byte;            { Code for the associated key        }
  1466. a                                VAR macEvent: EventRecord);{ auto key event record            }
  1467. c390,390
  1468. c395,395
  1469. a    { Null Method                        }
  1470. c394,395
  1471. a{****************************************************************************}
  1472. c509,511
  1473. a{****************************************************************************}
  1474. aPROCEDURE CApplication.DoKeyUp (theChar: Char;            { The associated character            }
  1475. a                                keyCode: Byte;            { Code for the associated key        }
  1476. a                                VAR macEvent: EventRecord);{ Key up event record            }
  1477. c405,405
  1478. c395,395
  1479. a    { Null Method                        }
  1480. c409,410
  1481. a{****************************************************************************}
  1482. c522,526
  1483. a{****************************************************************************}
  1484. aPROCEDURE CApplication.DoCommand (theCommand: Longint); { Command number    }
  1485. c403,403
  1486. a        theDA: Str255;            { Name of Desk Accessory to open    }
  1487. a        macSFReply: SFReply;    { Standard File reply record        }
  1488. c532,535
  1489. a            { Open a DA or launch another        }
  1490. a            {   application under MultiFinder    }
  1491. c538,539
  1492. a                        GetMenuItemText(GetMenuHandle(MENUapple), LoWord(-theCommand), theDA);
  1493. c541,575
  1494. a{****************************************************************************}
  1495. c577,579
  1496. a{****************************************************************************}
  1497. c450,450
  1498. c582,587
  1499. a        { Is the frontmost window modal? }
  1500. c589,615
  1501. a{*** M E M O R Y   M A N A G E M E N T ***}
  1502. c493,494
  1503. a{****************************************************************************}
  1504. c620,623
  1505. a{****************************************************************************}
  1506. c491,491
  1507. c626,630
  1508. a{****************************************************************************}
  1509. c632,637
  1510. a{****************************************************************************}
  1511. c639,641
  1512. a        self.inCriticalOperation := fInCriticalOperation;
  1513. c506,507
  1514. a{****************************************************************************}
  1515. c646,661
  1516. a{****************************************************************************}
  1517. c663,670
  1518. a                        { Try to release some memory        }
  1519. c672,673
  1520. a                    { See how much we still need        }
  1521. c675,677
  1522. a            BEGIN    { Hooray! Enough memory was freed!    }
  1523. a                GrowMemory := GROW_SUCCESS;    {   Let's get out of here            }
  1524. c680,707
  1525. a                    { We have enough savings to cover    }
  1526. a                    {   the request and maintain our    }
  1527. a                    {   minimum balance                }
  1528. c711,715
  1529. a                                DisposeHandle(rainyDay);
  1530. c717,722
  1531. a                        gSleepTime := 0;      { Idle as soon as possible            }
  1532. a                        rainyDayUsed := TRUE; { We've tapped the rainy day fund    }
  1533. c703,703
  1534. c575,575
  1535. c575,575
  1536. c608,608
  1537. c729,734
  1538. a                { Requestor is prepared for failure }
  1539. c736,738
  1540. a                { Try the last resort}
  1541. c740,744
  1542. a{****************************************************************************}
  1543. c746,760
  1544. a{****************************************************************************}
  1545. c762,763
  1546. a    { Null Method                        }
  1547. c618,618
  1548. c617,618
  1549. a{****************************************************************************}
  1550. c769,775
  1551. a{****************************************************************************}
  1552. c777,778
  1553. a    { Null Method                        }
  1554. c629,630
  1555. a{****************************************************************************}
  1556. c783,790
  1557. a{****************************************************************************}
  1558. c792,798
  1559. a{*** E X E C U T I O N   M E T H O D S ***}
  1560. c640,640
  1561. a{****************************************************************************}
  1562. c802,804
  1563. a{****************************************************************************}
  1564. c644,644
  1565. a        {)
  1566. c808,808
  1567. a{         }
  1568. c810,825
  1569. a        {)
  1570. c827,833
  1571. a{         }
  1572. c835,843
  1573. a                        { now that an exception handler is posted,        }
  1574. a                        { mark the application as running                }
  1575. c846,847
  1576. a        REPEAT                 { Continuously poll for events        }
  1577. a                        {   and respond to them            }
  1578. c699,699
  1579. c851,852
  1580. a        UNTIL NOT running;    {   Until flag is turned off        }
  1581. c699,699
  1582. c699,699
  1583. a        phase := appQuitting; { exception handler is about to be removed,    }
  1584. a                          { mark the app as quitting.                    }
  1585. c858,862
  1586. a{****************************************************************************}
  1587. c864,866
  1588. a{****************************************************************************}
  1589. c868,882
  1590. a            { Is a DA the front window?        }
  1591. c884,889
  1592. a            { A user command may have initiated a    }
  1593. a            { critical operation, e.g. Save, but    }
  1594. a            { it is complete once the event is handled}
  1595. c726,726
  1596. c894,895
  1597. a            { any temporary allocations should have been}
  1598. a            { released by now.}
  1599. c726,726
  1600. c899,905
  1601. a                { Carry out urgent chores            }
  1602. c726,726
  1603. c908,911
  1604. a        { Check for context-switch with    }
  1605. a        {   Desk Accessories                }
  1606. c727,727
  1607. c915,941
  1608. a{****************************************************************************}
  1609. c943,946
  1610. a{****************************************************************************}
  1611. c948,949
  1612. a        openOrPrint: Integer;    { Type of action requested            }
  1613. a        numPreloads: Integer;    { No. of files to process            }
  1614. a        i: Integer;            { Index for files                    }
  1615. a        macAppFile: AppFile;    { Info about a file                }
  1616. a        macSFReply: SFReply;    { Standard File info record        }
  1617. c763,763
  1618. a        { Check if files were selected        }
  1619. c765,765
  1620. a{$IFC MAC68K}
  1621. c958,959
  1622. a        { Process files one by one            }
  1623. c765,765
  1624. c962,968
  1625. a                { Get info about the file            }
  1626. c781,781
  1627. c971,972
  1628. a                { Copy info into a Standard File     }
  1629. a                {   record                            }
  1630. c781,781
  1631. c976,980
  1632. a                { Automatically open selected file    }
  1633. c794,794
  1634. c983,985
  1635. a                    { User wants to print Document        }
  1636. c987,989
  1637. a                { We've processed this file        }
  1638. c991,995
  1639. a        { Perform start up action            }
  1640. c997,997
  1641. c294,294
  1642. c796,797
  1643. a{****************************************************************************}
  1644. c1002,1008
  1645. a{****************************************************************************}
  1646. c1010,1015
  1647. a        { TCL 1.1 - only do cmdNew if there are no AppleEvents.}
  1648. a        { If there are, we anticipate getting the open app event}
  1649. a        { Under the THINK Pascal environment, we don't get an    }
  1650. a        { initial oapp. We use the compiler variable TCL_DEBUG }
  1651. a        { to determine if we're running the debug version.        }
  1652. a        { If we are, we don't wait for the oapp event.            }
  1653. c818,818
  1654. c1023,1032
  1655. a{****************************************************************************}
  1656. c1034,1037
  1657. a{****************************************************************************}
  1658. c1039,1042
  1659. a        { We are going into the background    }
  1660. c1044,1048
  1661. a{****************************************************************************}
  1662. c1050,1052
  1663. a{****************************************************************************}
  1664. c1054,1056
  1665. a            { Do nothing if a DA is in front    }
  1666. c1058,1064
  1667. a{****************************************************************************}
  1668. c1066,1068
  1669. a{****************************************************************************}
  1670. c1070,1071
  1671. a        LMSetCurDeactive(WindowRef(0));
  1672. c1073,1075
  1673. a{****************************************************************************}
  1674. c1077,1079
  1675. a{****************************************************************************}
  1676. c1081,1082
  1677. a        LMSetCurActivate(WindowRef(0));
  1678. c1084,1087
  1679. a{****************************************************************************}
  1680. c1089,1093
  1681. a{****************************************************************************}
  1682. c1095,1099
  1683. a                { Assume we will stop running        }
  1684. c1101,1102
  1685. a                {   (Does not include floating        }
  1686. a                {    windows or DAs)                }
  1687. c880,880
  1688. c1106,1110
  1689. a                { Tell window's Director to quit    }
  1690. a                {   If Quit method returns FALSE,    }
  1691. a                {   abort the quit sequence        }
  1692. c885,885
  1693. c1115,1116
  1694. a                { User still wants to run program    }
  1695. c1118,1126
  1696. a{****************************************************************************}
  1697. c1128,1130
  1698. a{****************************************************************************}
  1699. c1132,1133
  1700. a{ NULL Method                        }
  1701. c934,935
  1702. a{****************************************************************************}
  1703. c1138,1145
  1704. a{****************************************************************************}
  1705. c1147,1149
  1706. a    {)
  1707. c1151,1155
  1708. a{     }
  1709. c1157,1159
  1710. a{     }
  1711. c935,935
  1712. a        Failure(kSilentErr, 0);        { kSilentErr inhibits the error alert }
  1713. c934,935
  1714. a{*** D O C U M E N T   H A N D L I N G   M E T H O D S ***}
  1715. c935,935
  1716. a{****************************************************************************}
  1717. c1168,1171
  1718. a{****************************************************************************}
  1719. c1173,1175
  1720. a    { NULL Method                        }
  1721. c934,935
  1722. a{****************************************************************************}
  1723. c1180,1184
  1724. a{****************************************************************************}
  1725. c1186,1188
  1726. a    { NULL Method                        }
  1727. c999,1000
  1728. c957,957
  1729. a{****************************************************************************}
  1730. c1194,1197
  1731. a{****************************************************************************}
  1732. c1199,1200
  1733. a        corner: Point;        { Top left corner of dialog box    }
  1734. c1202,1203
  1735. a            { Center dialog box on the screen    }
  1736. c957,957
  1737. c1206,1207
  1738. a        SFPGetFile(corner, '', sfFileFilter, sfNumTypes, @sfFileTypes, sfGetDLOGHook, macSFReply, sfGetDLOGid, sfGetDLOGFilter);
  1739. c1209,1211
  1740. a{*** C H O R E   H A N D L I N G   M E T H O D S ***}
  1741. c959,959
  1742. c961,961
  1743. a{****************************************************************************}
  1744. c1216,1220
  1745. a{****************************************************************************}
  1746. aPROCEDURE CApplication.Idle (VAR macEvent: EventRecord); { Usually a null or system event    }
  1747. c1011,1011
  1748. a        grow: Longint;    { Amount heap may be grown            }
  1749. c1225,1237
  1750. a        { Memory reserve needs to be        }
  1751. a        {   replenished                    }
  1752. c980,980
  1753. c1059,1059
  1754. c1242,1243
  1755. a            { Enough memory has been freed        }
  1756. c992,992
  1757. c1246,1247
  1758. a                                DisposeHandle(rainyDay);
  1759. c989,989
  1760. c1250,1256
  1761. a                { Inform user of memory shortage    }
  1762. c998,998
  1763. c1259,1262
  1764. a                { Idle time for objects in the        }
  1765. a                {   active chain of command        }
  1766. c1000,1000
  1767. a                { Run thru the chain of command    }
  1768. a                { Start at the bottom                }
  1769. c1015,1015
  1770. c1269,1272
  1771. a                {   Let bureaucrat kill some time    }
  1772. c1015,1015
  1773. c1275,1277
  1774. a                {   Move up to his/her boss        }
  1775. c1279,1280
  1776. a                { Until end of command chain        }
  1777. c1282,1283
  1778. a                { Carry out assigned chores        }
  1779. c1015,1015
  1780. c1286,1289
  1781. a{****************************************************************************}
  1782. c1291,1294
  1783. a{****************************************************************************}
  1784. c1296,1299
  1785. a                { Force immediate idle                }
  1786. c1301,1303
  1787. a{****************************************************************************}
  1788. c1305,1308
  1789. a{****************************************************************************}
  1790. c1310,1315
  1791. a{****************************************************************************}
  1792. c1317,1321
  1793. a{****************************************************************************}
  1794. c1323,1329
  1795. a{****************************************************************************}
  1796. c1331,1334
  1797. a{****************************************************************************}
  1798. c1336,1340
  1799. a{****************************************************************************}
  1800. c1342,1344
  1801. a{****************************************************************************}
  1802. c1346,1395
  1803. a        { event was handled successfully}
  1804. c1114,1114
  1805. c1398,1403
  1806. a{****************************************************************************}
  1807. c1405,1410
  1808. a{****************************************************************************}
  1809. aFUNCTION CApplication.PackageAppleEvent (VAR theEvent: AppleEvent;
  1810. a                                VAR theReply: AppleEvent;
  1811. c1414,1424
  1812. a{****************************************************************************}
  1813. c1426,1428
  1814. a{****************************************************************************}
  1815. c1149,1149
  1816. c1431,1467
  1817. a                            { if we're still running then Quit didn't succeed    }
  1818. a                            { but we don't know what error to report!            }
  1819. c1188,1188
  1820. c1471,1477
  1821. e
  1822. fCArray.p
  1823. x429612522,57456986
  1824. a{****************************************************************************}
  1825. c1,10
  1826. a{****************************************************************************}
  1827. c12,24
  1828. a        Assert((index > 0) & (index <= numItems));
  1829. c26,32
  1830. a{****************************************************************************}
  1831. c34,38
  1832. a{****************************************************************************}
  1833. c40,41
  1834. a                                    { Initialize superclass            }
  1835. c43,52
  1836. a{****************************************************************************}
  1837. c54,56
  1838. a{****************************************************************************}
  1839. c58,59
  1840. a                        { Free handle to items                }
  1841. c61,61
  1842. a                        { Pass message on to superclass    }
  1843. c63,66
  1844. a{****************************************************************************}
  1845. c68,71
  1846. a{****************************************************************************}
  1847. c73,75
  1848. a                                { Set instance variable            }
  1849. c77,79
  1850. a{****************************************************************************}
  1851. c81,85
  1852. a{****************************************************************************}
  1853. c87,96
  1854. a{****************************************************************************}
  1855. c98,100
  1856. a{****************************************************************************}
  1857. c102,108
  1858. a{****************************************************************************}
  1859. c110,113
  1860. a{****************************************************************************}
  1861. c115,121
  1862. a{****************************************************************************}
  1863. c123,125
  1864. a{****************************************************************************}
  1865. c127,133
  1866. a{****************************************************************************}
  1867. c135,142
  1868. a{****************************************************************************}
  1869. c144,147
  1870. a        Assert(index > 0);
  1871. a        Assert(lockChanges = FALSE);
  1872. c129,129
  1873. c151,153
  1874. a                                { Check if we need more space        }
  1875. c155,157
  1876. a                                { Move items at position >= index    }
  1877. a                                {   down one slot, unless it is    }
  1878. a                                {   the last item                    }
  1879. c133,133
  1880. c162,166
  1881. a                                { There's another item in the list    }
  1882. c168,169
  1883. a                                { Stick new object in the empty slot}
  1884. c171,175
  1885. a{****************************************************************************}
  1886. c177,181
  1887. a{****************************************************************************}
  1888. c183,187
  1889. a        Assert(lockChanges = FALSE);
  1890. c157,157
  1891. c190,192
  1892. a                                        { We're gonna get rid of an item    }
  1893. c194,195
  1894. a                                    { Shift items following the object    }
  1895. a                                    {   to remove up one slot, thereby    }
  1896. a                                    {   overwriting it                    }
  1897. c161,161
  1898. c200,202
  1899. a                                    { The number of free slots is        }
  1900. a                                    {   greater than the blockSize.    }
  1901. a                                    {   Reduce the size of the items    }
  1902. a                                    {   handle.                        }
  1903. c169,169
  1904. c208,212
  1905. a{****************************************************************************}
  1906. c214,216
  1907. a{****************************************************************************}
  1908. c218,219
  1909. a                                { Be sure to take the scratch        }
  1910. a                                { element storage at the end         }
  1911. a                                { of the handle into account when    }
  1912. a                                { resizing    the item handle            }
  1913. c224,228
  1914. a{****************************************************************************}
  1915. c230,232
  1916. a{****************************************************************************}
  1917. c234,238
  1918. a{****************************************************************************}
  1919. c240,244
  1920. a{****************************************************************************}
  1921. c246,255
  1922. a            { In order to move the item, we must first make a copy of it.    }
  1923. a            { Since the items could be of any size, we keep storage for    }
  1924. a            { exactly one item at the end of the items handle. In order    }
  1925. a            { to guard against the two methods simultaneously using the    }
  1926. a            { temporary buffer, we mark it in use by setting the            }
  1927. a            { usingTemporary instance variable.                            }
  1928. c207,207
  1929. c263,265
  1930. a                                        { Element is before target location}
  1931. a                                        { Shift items between current        }
  1932. a                                        {   and target locations down one    }
  1933. c269,272
  1934. a                                        { Element is after target location    }
  1935. a                                        { Shift items between target and    }
  1936. a                                        {   current locations up one        }
  1937. c276,277
  1938. a                                    { copy element into new position }
  1939. c279,286
  1940. a{****************************************************************************}
  1941. c288,292
  1942. a{****************************************************************************}
  1943. c294,302
  1944. a{****************************************************************************}
  1945. c304,311
  1946. a{****************************************************************************}
  1947. c313,339
  1948. a{****************************************************************************}
  1949. c341,344
  1950. a{****************************************************************************}
  1951. c346,356
  1952. a{****************************************************************************}
  1953. c358,360
  1954. a{****************************************************************************}
  1955. c362,364
  1956. a        Assert(usingTemporary = FALSE);
  1957. c302,302
  1958. c367,370
  1959. a{****************************************************************************}
  1960. c372,374
  1961. a{****************************************************************************}
  1962. c376,377
  1963. a        Assert(usingTemporary = TRUE);
  1964. c302,302
  1965. c380,383
  1966. a{****************************************************************************}
  1967. c385,387
  1968. a{****************************************************************************}
  1969. c389,394
  1970. a{****************************************************************************}
  1971. c396,398
  1972. a{****************************************************************************}
  1973. c400,410
  1974. a            { if copying the item handle failed, then we should    }
  1975. a            { kill the copy created by CObject.Copy. We clear the    }
  1976. a            { item handle so disposing of the copy doesn't dispose    }
  1977. a            { of the array's item handle.                            }
  1978. c335,335
  1979. c416,442
  1980. e
  1981. fCBartender.p
  1982. x526322301,214403095
  1983. a{**************************************************}
  1984. c1,12
  1985. a{**************************************************}
  1986. c14,30
  1987. a{**************************************************}
  1988. c32,35
  1989. a{**************************************************}
  1990. c37,74
  1991. a                theEntry.inMenuBar := TRUE;    { mark menu as installed in menu bar . }
  1992. c76,100
  1993. a{***   I N S E R T I O N / D E L E T I O N   M E T H O D S   ***}
  1994. c98,100
  1995. a{**************************************************}
  1996. c106,110
  1997. a{**************************************************}
  1998. c104,104
  1999. c113,144
  2000. a                theMenus^^[i].inMenuBar := TRUE;        { mark menu as installed }
  2001. c146,154
  2002. a{**************************************************}
  2003. c156,160
  2004. a{**************************************************}
  2005. c153,153
  2006. c163,173
  2007. a                                { release commands handle }
  2008. c175,184
  2009. a{**************************************************}
  2010. c186,190
  2011. a{**************************************************}
  2012. c181,181
  2013. c193,198
  2014. a{**************************************************}
  2015. c200,203
  2016. a{**************************************************}
  2017. c192,192
  2018. c206,215
  2019. a                DeleteMenu(MENUid);             { Remove menu from the menu bar    }
  2020. a                forceMBarUpdate := TRUE;         { must redraw menu bar             }
  2021. a                menuIndex := FindMenuIndex(MENUid); { find menu in table }
  2022. c219,221
  2023. a                        theMenus^^[menuIndex].inMenuBar := FALSE; { mark menu as not in menu bar }
  2024. c223,234
  2025. a{**************************************************}
  2026. c236,242
  2027. a{**************************************************}
  2028. c225,225
  2029. c245,257
  2030. a                macMenu := GetMenuHandle(hMENUid);
  2031. c244,244
  2032. c260,270
  2033. a                macMenu := GetMenuHandle(inMENUid);
  2034. c272,280
  2035. a{***   I T E M   M A N I P U L A T I O N   M E T H O D S    ***}
  2036. c259,259
  2037. c259,259
  2038. c259,259
  2039. a{**************************************************}
  2040. c286,289
  2041. a{**************************************************}
  2042. c265,265
  2043. c292,304
  2044. a{**************************************************}
  2045. c306,309
  2046. a{**************************************************}
  2047. c282,282
  2048. c312,324
  2049. a{**************************************************}
  2050. c326,331
  2051. a{**************************************************}
  2052. c303,303
  2053. c334,345
  2054. a                    BEGIN                        { Make sure menu is installed        }
  2055. a                                                { and not already enabled            }
  2056. a                        EnableItem(macMenu, 0);        { Item 0 means the menu as a whole    }
  2057. a                        DeleteFromBar(NOTHING);        { Force redraw of menu bar        }
  2058. c350,353
  2059. a{**************************************************}
  2060. c355,359
  2061. a{**************************************************}
  2062. c324,324
  2063. c362,366
  2064. a        macMenu := GetMenuHandle(MENUid);        { Get associated Toolbox record }
  2065. c368,374
  2066. a{****************************************************************************}
  2067. c376,378
  2068. a{****************************************************************************}
  2069. c340,340
  2070. c381,393
  2071. a{****************************************************************************}
  2072. c395,397
  2073. a{****************************************************************************}
  2074. c399,412
  2075. a{**************************************************}
  2076. c414,417
  2077. a{**************************************************}
  2078. c377,377
  2079. c420,429
  2080. a            SetMenuItemText(macMenu, itemNo, theText);
  2081. c393,393
  2082. c396,396
  2083. c396,396
  2084. a{**************************************************}
  2085. c435,438
  2086. a{**************************************************}
  2087. c396,396
  2088. c441,450
  2089. a            GetMenuItemText(macMenu, itemNo, theText);
  2090. c411,412
  2091. c412,412
  2092. a{**************************************************}
  2093. c456,461
  2094. a{**************************************************}
  2095. c419,419
  2096. c464,478
  2097. a{** I T E M   I N S E R T I O N / D E L E T I O N   M E T H O D S **}
  2098. c432,433
  2099. c432,432
  2100. a{**************************************************}
  2101. c484,488
  2102. a{**************************************************}
  2103. c440,440
  2104. c491,514
  2105. a                InsertMenuItem(theMenus^^[i].macMenu, theText, afterItem);
  2106. c463,463
  2107. c517,542
  2108. a{**************************************************}
  2109. c544,547
  2110. a{**************************************************}
  2111. c498,498
  2112. c550,565
  2113. a                DeleteMenuItem(macMenu, itemNo);    { Remove item from Mac menu        }
  2114. c511,511
  2115. c568,582
  2116. a{** L O O K - U P   M E T H O D S **}
  2117. c527,527
  2118. c527,527
  2119. c529,529
  2120. a{**************************************************}
  2121. c588,591
  2122. a{**************************************************}
  2123. c533,533
  2124. c594,610
  2125. a{**************************************************}
  2126. c612,616
  2127. a{**************************************************}
  2128. c556,556
  2129. c619,635
  2130. a{**************************************************}
  2131. c637,641
  2132. a{**************************************************}
  2133. c580,580
  2134. c644,670
  2135. a{**************************************************}
  2136. c672,676
  2137. a{**************************************************}
  2138. c618,618
  2139. c679,717
  2140. a{**************************************************}
  2141. c719,723
  2142. a{**************************************************}
  2143. c665,665
  2144. c726,743
  2145. a                        GetMenuItemText(macMenu, i, testStr);
  2146. c678,678
  2147. c746,761
  2148. a{*** C O M M A N D   E X T R A C T I O N ***}
  2149. c695,695
  2150. c695,695
  2151. c695,695
  2152. a{**************************************************}
  2153. c767,772
  2154. a{**************************************************}
  2155. c716,716
  2156. c775,792
  2157. a                        GetMenuItemText(theEntry.macMenu, itemNo, itemStr);
  2158. c794,795
  2159. a                        SetMenuItemText(theEntry.macMenu, itemNo, itemStr);
  2160. c754,754
  2161. c798,802
  2162. a{**************************************************}
  2163. c804,808
  2164. a{**************************************************}
  2165. c810,842
  2166. a{**************************************************}
  2167. c844,848
  2168. a{**************************************************}
  2169. c774,774
  2170. c851,878
  2171. a{** I T E M   D I M M I N G / E N A B L I N G   M E T H O D S **}
  2172. c801,802
  2173. c812,812
  2174. a{**************************************************}
  2175. c884,895
  2176. a{**************************************************}
  2177. c820,820
  2178. c898,910
  2179. a{**************************************************}
  2180. c912,917
  2181. a{**************************************************}
  2182. c840,840
  2183. c920,932
  2184. a{**************************************************}
  2185. c934,938
  2186. a{**************************************************}
  2187. c856,856
  2188. c941,1004
  2189. a{****************************************************************************}
  2190. c1006,1011
  2191. a{****************************************************************************}
  2192. c927,927
  2193. c1014,1029
  2194. a                numMenus := self.numMenus;
  2195. c1031,1037
  2196. a                { can't leave here, because we still need to update    }
  2197. a                { the lastEnable flag for each menu.                    }
  2198. c979,980
  2199. c997,997
  2200. c1043,1047
  2201. e
  2202. fCBureaucrat.p
  2203. x514627345,189747433
  2204. a{**************************************************}
  2205. c1,18
  2206. a{**************************************************}
  2207. c20,32
  2208. a{*** C O N S T R U C T I O N / D E S T R U C T I O N     M E T H O D S ***}
  2209. c31,32
  2210. c34,34
  2211. a{**************************************************}
  2212. c38,41
  2213. a{**************************************************}
  2214. c43,49
  2215. a{**************************************************}
  2216. c51,54
  2217. a{**************************************************}
  2218. c49,49
  2219. c57,60
  2220. a        IF gGopher = self THEN
  2221. c62,67
  2222. a{*** A C C E S S I N G   M E T H O D S ***}
  2223. c65,67
  2224. a{**************************************************}
  2225. c73,76
  2226. a{**************************************************}
  2227. c67,67
  2228. c79,85
  2229. a{*** C O M M A N D I N G   M E T H O D S ***}
  2230. c78,78
  2231. c78,78
  2232. c78,78
  2233. a{**************************************************}
  2234. c91,95
  2235. a{**************************************************}
  2236. c83,83
  2237. c98,106
  2238. a{**************************************************}
  2239. c108,111
  2240. a{**************************************************}
  2241. c97,97
  2242. c114,115
  2243. a                                VAR macEvent: EventRecord);
  2244. c117,123
  2245. a{**************************************************}
  2246. c125,128
  2247. a{**************************************************}
  2248. c113,113
  2249. c131,132
  2250. a                                VAR macEvent: EventRecord);
  2251. c117,119
  2252. c137,140
  2253. a{**************************************************}
  2254. c142,146
  2255. a{**************************************************}
  2256. c130,130
  2257. c149,150
  2258. a                                VAR macEvent: EventRecord);
  2259. c134,136
  2260. c155,158
  2261. a{**************************************************}
  2262. c160,190
  2263. a{**************************************************}
  2264. c192,200
  2265. a{**************************************************}
  2266. c202,210
  2267. a{**************************************************}
  2268. c192,192
  2269. c213,217
  2270. a{**************************************************}
  2271. c219,222
  2272. a{**************************************************}
  2273. c196,196
  2274. c225,229
  2275. a{****************************************************************************}
  2276. c231,235
  2277. a{****************************************************************************}
  2278. c212,212
  2279. c238,242
  2280. a        gSleepTime := 0;     { force immediate idle }
  2281. c244,245
  2282. a                IF (gGopher <> self) THEN
  2283. c247,248
  2284. a                        gGopher := self;
  2285. c216,216
  2286. a                { can't set new gopher if previous gopher  }
  2287. a                { refuses to resign                        }
  2288. c217,217
  2289. c254,256
  2290. a                                BecomeGopher := FALSE; { failed }
  2291. c258,267
  2292. a        BecomeGopher := TRUE; { success    }
  2293. c269,270
  2294. a{****************************************************************************}
  2295. c272,275
  2296. a{****************************************************************************}
  2297. c237,237
  2298. c278,281
  2299. a            itsSupervisor.ProviderChanged(self, reason, info);
  2300. c242,242
  2301. c284,287
  2302. a{****************************************************************************}
  2303. c289,291
  2304. a{****************************************************************************}
  2305. c250,250
  2306. c294,302
  2307. a{****************************************************************************}
  2308. c304,306
  2309. a{****************************************************************************}
  2310. c270,270
  2311. c309,316
  2312. e
  2313. fCChore.p
  2314. x160907416,228016032
  2315. a{**************************************************}
  2316. c1,12
  2317. a{**************************************************}
  2318. c14,25
  2319. a{**************************************************}
  2320. c27,33
  2321. a{**************************************************}
  2322. c35,40
  2323. e
  2324. fCClipboard.p
  2325. x381876976,446628050
  2326. a{****************************************************************************}
  2327. c1,25
  2328. a{****************************************************************************}
  2329. c27,32
  2330. a    TCL, Scrap;
  2331. c31,31
  2332. c35,36
  2333. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  2334. c34,34
  2335. c36,36
  2336. a{****************************************************************************}
  2337. c41,43
  2338. a{****************************************************************************}
  2339. aPROCEDURE CClipboard.IClipboard (aSupervisor: CApplication; { Boss in chain of command         }
  2340. a                                hasWindow: Boolean); { Can contents be displayed?        }
  2341. c47,50
  2342. a                        { Initialize superclass            }
  2343. c52,56
  2344. a                itsWindow.IWindow(WIND_CLIPBOARD, FALSE, gDesktop, self);
  2345. c58,60
  2346. a                itsScrollPane.IScrollPane(itsWindow, self, 0, 0, 0, 0, sizELASTIC, sizELASTIC, TRUE, TRUE, TRUE);
  2347. c62,73
  2348. a{****************************************************************************}
  2349. c75,80
  2350. a{****************************************************************************}
  2351. c82,83
  2352. a                                        { Copy private scrap to the global    }
  2353. a                                        {   one if necessary                }
  2354. c86,92
  2355. a                                    { Hide Clipboard window            }
  2356. c94,102
  2357. a{****************************************************************************}
  2358. c104,107
  2359. a{****************************************************************************}
  2360. c109,113
  2361. a                                            { If global scrap changed, we must    }
  2362. a                                            {   update our private one if the    }
  2363. a                                            {   Clipboard window is visible.    }
  2364. a                                            {   No need to convert when the    }
  2365. a                                            {   Clipboard window is hidden; we    }
  2366. a                                            {   can wait for a Paste. This way    }
  2367. a                                            {   we avoid having to convert if    }
  2368. a                                            {   the user never uses it.        }
  2369. a                                            {   before we were suspended        }
  2370. a                                            {   was active before suspending    }
  2371. c102,102
  2372. c125,130
  2373. a                                            { Show window if it was visible    }
  2374. c132,134
  2375. a                                            { Activate Clipboard window if it    }
  2376. a                                            { was active                        }
  2377. c137,144
  2378. a{****************************************************************************}
  2379. c146,149
  2380. a{****************************************************************************}
  2381. c151,158
  2382. a                                { Close Clipboard window            }
  2383. c160,161
  2384. a                                { Clipboard never cancels a close    }
  2385. c163,165
  2386. a{****************************************************************************}
  2387. c167,171
  2388. a{****************************************************************************}
  2389. c173,176
  2390. a                                { Hide but do NOT dispose            }
  2391. c178,181
  2392. a                                { Toggle text to "Hide Clipboard"    }
  2393. c183,186
  2394. a{****************************************************************************}
  2395. c188,191
  2396. a{****************************************************************************}
  2397. c193,198
  2398. a                                { Hide the Clipboard window        }
  2399. c160,160
  2400. c201,201
  2401. a        ELSE                            { Show the Clipboard window        }
  2402. c198,198
  2403. a                                { Update private scrap if global    }
  2404. a                                {   is more recent                    }
  2405. c206,210
  2406. a                                { Clipboard window is the front,    }
  2407. a                                {   active window                    }
  2408. c213,216
  2409. a                                { Toggle text to "Show Clipboard"    }
  2410. c218,226
  2411. a{****************************************************************************}
  2412. c228,230
  2413. a{****************************************************************************}
  2414. aPROCEDURE CClipboard.PutGlobalScrap (theType: ResType; { Resource type of the data        }
  2415. c233,234
  2416. a        saveHState: SignedByte;    { Original handle attributes        }
  2417. a        errCode: Longint;            { Mac error code                }
  2418. c237,238
  2419. a                                { Save state of data handle        }
  2420. c240,240
  2421. a                                { Lock data in place                }
  2422. c242,244
  2423. a                                { Restore state of data handle        }
  2424. c246,249
  2425. a    { In the event that PutGlobalScrap is being called without            }
  2426. a    { a user cut or copy, we need to call SystemEdit so the            }
  2427. a    { clipboard works properly.                                        }
  2428. c216,216
  2429. c254,262
  2430. a{****************************************************************************}
  2431. c264,267
  2432. a{****************************************************************************}
  2433. aFUNCTION CClipboard.GetGlobalScrap (theType: ResType; { Resource type of the data        }
  2434. c270,271
  2435. a        length: Longint;        { Amount of data or error code        }
  2436. a        offset: Longint;        { Offset from start of scrap        }
  2437. c238,238
  2438. a                            { Read from the desk scrap            }
  2439. c216,216
  2440. c277,277
  2441. a                                        { Save in case someone wants this    }
  2442. a                                        {   information                    }
  2443. c280,281
  2444. a                                        { Check for an error                }
  2445. c283,284
  2446. a                                        { No data found                    }
  2447. a                                        { Finding no data of the specified    }
  2448. a                                        {   type does not warrant an error    }
  2449. a                                        {   message                        }
  2450. c289,294
  2451. a                                        { Data successfully retrieved        }
  2452. c223,223
  2453. c297,299
  2454. a{****************************************************************************}
  2455. c301,304
  2456. a{****************************************************************************}
  2457. c306,307
  2458. a        theScrapInfo: PScrapStuff;
  2459. c238,238
  2460. c310,310
  2461. a                                    { Private scrap has changed        }
  2462. c244,244
  2463. c313,315
  2464. a                                    { Get info about global scrap        }
  2465. c244,244
  2466. c318,325
  2467. a{****************************************************************************}
  2468. c327,329
  2469. a{****************************************************************************}
  2470. c331,332
  2471. a        theScrapInfo: PScrapStuff;
  2472. c274,274
  2473. a                                    { Get info about global scrap        }
  2474. c336,340
  2475. a{****************************************************************************}
  2476. c342,346
  2477. a{****************************************************************************}
  2478. c348,349
  2479. a                    { Null Method                        }
  2480. c298,299
  2481. a{****************************************************************************}
  2482. c354,359
  2483. a{****************************************************************************}
  2484. c361,362
  2485. a                    { Null Method                        }
  2486. c298,299
  2487. a{ Resource type of the data        }
  2488. a{****************************************************************************}
  2489. c368,376
  2490. a{****************************************************************************}
  2491. aPROCEDURE CClipboard.PutData (theType: ResType;    { Resource type of the data        }
  2492. c379,386
  2493. a{ Create space for the data        }
  2494. a{ Kill the data handle                }
  2495. a{****************************************************************************}
  2496. c390,396
  2497. a{****************************************************************************}
  2498. aFUNCTION CClipboard.GetData (theType: ResType;
  2499. c399,403
  2500. a                            { Data successfully retrieved        }
  2501. c405,407
  2502. a                            { Some kind of error occurred        }
  2503. c312,312
  2504. a                DisposeHandle(theData);
  2505. c411,411
  2506. a                            { Signal failure                    }
  2507. c413,416
  2508. a{****************************************************************************}
  2509. c418,423
  2510. a{****************************************************************************}
  2511. c325,325
  2512. c426,438
  2513. a{****************************************************************************}
  2514. c440,443
  2515. a{****************************************************************************}
  2516. c445,450
  2517. a{****************************************************************************}
  2518. c452,456
  2519. a{****************************************************************************}
  2520. c458,489
  2521. a{****************************************************************************}
  2522. c491,493
  2523. a{****************************************************************************}
  2524. c495,499
  2525. a{****************************************************************************}
  2526. c501,506
  2527. a{****************************************************************************}
  2528. c508,512
  2529. a{****************************************************************************}
  2530. c514,518
  2531. a{****************************************************************************}
  2532. c409,409
  2533. c521,546
  2534. a                pict.IPicture(itsScrollPane, self, 1, 1, 0, 0, sizELASTIC, sizELASTIC);
  2535. c548,554
  2536. a                text.IEditText(itsScrollPane, self, 1, 1, 0, 0, sizELASTIC, sizELASTIC, 1000);
  2537. c556,559
  2538. a                                                    { CEditText makes its own copy. }
  2539. c561,561
  2540. a                DisposeHandle(dataHandle);
  2541. c486,486
  2542. c564,564
  2543. a                                                    { we didn't make a view, kill the data }
  2544. c534,534
  2545. c450,450
  2546. c568,572
  2547. e
  2548. fCCluster.p
  2549. x242636483,328758261
  2550. a{****************************************************************************}
  2551. c1,17
  2552. a{****************************************************************************}
  2553. c19,28
  2554. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  2555. c28,28
  2556. a{****************************************************************************}
  2557. c32,34
  2558. a{****************************************************************************}
  2559. c36,37
  2560. a                { Initialize superclass            }
  2561. c39,41
  2562. a                { set the items handle to be a copy of CArray.hItems    }
  2563. a                { This helps to be compatible with existing subclasses }
  2564. a                { of CCluster and also lets us optimize certain things }
  2565. a                { because we know the item handle is really an array    }
  2566. a                { of object references.                                }
  2567. c39,39
  2568. c48,50
  2569. a{****************************************************************************}
  2570. c52,54
  2571. a{****************************************************************************}
  2572. c56,58
  2573. a                    { Dispose of the Cluster itself    }
  2574. a        self.Free;
  2575. c49,50
  2576. a{****************************************************************************}
  2577. c64,67
  2578. a{****************************************************************************}
  2579. c69,79
  2580. a                            { Clear reference to disposed item    }
  2581. c81,83
  2582. a                            { notify dependents                }
  2583. c75,75
  2584. c86,90
  2585. a                    { There are too many free slots    }
  2586. c75,75
  2587. c93,96
  2588. a{****************************************************************************}
  2589. c98,100
  2590. a{****************************************************************************}
  2591. aPROCEDURE CCluster.Add (theObject: CObject); { Object to add                    }
  2592. c83,83
  2593. c104,109
  2594. a{ Search items for this object        }
  2595. a{****************************************************************************}
  2596. c112,114
  2597. a{****************************************************************************}
  2598. aPROCEDURE CCluster.Remove (theObject: CObject); { Object to remove            }
  2599. c117,117
  2600. a        i: Longint;    { Offset of object in cluster        }
  2601. c104,104
  2602. c120,126
  2603. a{****************************************************************************}
  2604. c128,130
  2605. a{****************************************************************************}
  2606. aFUNCTION CCluster.Includes (theObject: CObject): Boolean; { Object to check for inclusion    }
  2607. c104,104
  2608. a            { Object is in the cluster if the    }
  2609. a            {   Offset is NOT BAD_INDEX        }
  2610. c103,103
  2611. c137,139
  2612. a{ Function pointer                    }
  2613. a{****************************************************************************}
  2614. c142,144
  2615. a{****************************************************************************}
  2616. c146,172
  2617. a{****************************************************************************}
  2618. c174,177
  2619. a{****************************************************************************}
  2620. c179,206
  2621. a{****************************************************************************}
  2622. c208,211
  2623. a{****************************************************************************}
  2624. c213,243
  2625. a{****************************************************************************}
  2626. c245,248
  2627. a{****************************************************************************}
  2628. c250,283
  2629. a{****************************************************************************}
  2630. c285,288
  2631. a{****************************************************************************}
  2632. aFUNCTION CCluster.Offset (theObject: CObject): Longint; { Object to search for                }
  2633. c253,253
  2634. c258,258
  2635. a        i: Longint;    { Running index into the cluster    }
  2636. c258,258
  2637. c265,265
  2638. c272,272
  2639. c297,305
  2640. a        Offset := BAD_INDEX;        { search failed }
  2641. c281,282
  2642. a{****************************************************************************}
  2643. c310,313
  2644. a{****************************************************************************}
  2645. c315,325
  2646. e
  2647. fCCollaborator.p
  2648. x2900935,319870401
  2649. a{****************************************************************************}
  2650. c1,13
  2651. a{****************************************************************************}
  2652. c15,24
  2653. a{****************************************************************************}
  2654. c26,29
  2655. a{****************************************************************************}
  2656. c31,37
  2657. a{****************************************************************************}
  2658. c39,43
  2659. a{****************************************************************************}
  2660. c45,47
  2661. a        aProvider.AddDependent(self);
  2662. c49,50
  2663. a{****************************************************************************}
  2664. c52,56
  2665. a{****************************************************************************}
  2666. c58,61
  2667. a        aProvider.RemoveDependent(self);
  2668. c63,64
  2669. a{****************************************************************************}
  2670. c66,68
  2671. a{****************************************************************************}
  2672. c70,83
  2673. a{****************************************************************************}
  2674. c85,88
  2675. a{****************************************************************************}
  2676. c90,96
  2677. a{****************************************************************************}
  2678. c98,100
  2679. a{****************************************************************************}
  2680. c102,114
  2681. a{****************************************************************************}
  2682. c116,118
  2683. a{****************************************************************************}
  2684. c120,127
  2685. a{****************************************************************************}
  2686. c129,135
  2687. a{****************************************************************************}
  2688. c137,143
  2689. a            aDependent.ProviderChanged(self, reason, info);
  2690. c145,148
  2691. a    { We allow the senders of BroadcastChange to pass NULL for info    }
  2692. a    { However, assuming dereferencing NIL is bad, it easier for        }
  2693. a    { receivers of ProviderChanged if dereferencing info is always     }
  2694. a    { safe. Therefore, when info is NIL, we substitute of pointer        }
  2695. a    { to 0                                                                }
  2696. c141,141
  2697. c155,164
  2698. a{****************************************************************************}
  2699. c166,169
  2700. a{****************************************************************************}
  2701. c171,175
  2702. a    { null method, subclasses override }
  2703. c164,164
  2704. c154,154
  2705. a{****************************************************************************}
  2706. c180,184
  2707. a{****************************************************************************}
  2708. c186,189
  2709. a            aDependent.RemoveProvider(self);
  2710. c191,194
  2711. a            aProvider.RemoveDependent(self);
  2712. c191,192
  2713. c175,175
  2714. c199,212
  2715. e
  2716. fCCollection.p
  2717. x177629848,311847080
  2718. a{**************************************************}
  2719. c1,12
  2720. a{**************************************************}
  2721. c14,25
  2722. a{**************************************************}
  2723. c27,30
  2724. a{**************************************************}
  2725. c32,38
  2726. a{**************************************************}
  2727. c40,43
  2728. a{**************************************************}
  2729. c45,51
  2730. a{**************************************************}
  2731. c53,56
  2732. a{**************************************************}
  2733. c50,50
  2734. c59,64
  2735. e
  2736. fCControl.p
  2737. x55362800,499728718
  2738. a{**************************************************}
  2739. c1,12
  2740. a{**************************************************}
  2741. c14,26
  2742. a{*** C O N S T R U C T I O N / D E S T R U C T I O N     M E T H O D S ***}
  2743. c25,26
  2744. c28,28
  2745. a{**************************************************}
  2746. c32,34
  2747. a{**************************************************}
  2748. c36,44
  2749. a{*** A C C E S S I N G   M E T H O D S ***}
  2750. c42,44
  2751. a{**************************************************}
  2752. c50,53
  2753. a{**************************************************}
  2754. c47,47
  2755. c56,58
  2756. a        SetControlValue(macControl, aValue);        { Set value with Toolbox call        }
  2757. c55,55
  2758. c61,64
  2759. a{**************************************************}
  2760. c66,69
  2761. a{**************************************************}
  2762. c60,60
  2763. c72,73
  2764. a        GetValue := GetControlValue(macControl);        { Return value from Toolbox call    }
  2765. c75,77
  2766. a{**************************************************}
  2767. c79,82
  2768. a{**************************************************}
  2769. c71,71
  2770. c85,87
  2771. a        SetControlMaximum(macControl, aMaxValue);        { Set value with Toolbox call        }
  2772. c75,77
  2773. a{**************************************************}
  2774. c93,96
  2775. a{**************************************************}
  2776. c84,84
  2777. c99,100
  2778. a        GetMaxValue := GetControlMaximum(macControl);        { Return value from Toolbox call}
  2779. c89,91
  2780. a{**************************************************}
  2781. c106,109
  2782. a{**************************************************}
  2783. c91,91
  2784. c112,114
  2785. a        SetControlMinimum(macControl, aMinValue);            { Set value with Toolbox call        }
  2786. c102,104
  2787. a{**************************************************}
  2788. c120,123
  2789. a{**************************************************}
  2790. c103,103
  2791. c126,127
  2792. a        GetMinValue := GetControlMinimum(macControl);        { Return value from Toolbox call}
  2793. c116,118
  2794. a{**************************************************}
  2795. c133,136
  2796. a{**************************************************}
  2797. c117,117
  2798. c139,141
  2799. a        SetControlTitle(macControl, aTitle);
  2800. c116,118
  2801. a{**************************************************}
  2802. c147,150
  2803. a{**************************************************}
  2804. c125,125
  2805. c153,154
  2806. a        GetControlTitle(macControl, aTitle);
  2807. c129,131
  2808. a{**************************************************}
  2809. c160,179
  2810. a{**************************************************}
  2811. c152,152
  2812. aPROCEDURE CControl.SetActionProc (anActionProc: ControlActionUPP);
  2813. c154,154
  2814. a        SetControlAction(macControl, anActionProc);
  2815. c156,158
  2816. c157,157
  2817. a{*** M A N I P U L A T I N G   M E T H O D S ***}
  2818. c157,158
  2819. c157,157
  2820. a{**************************************************}
  2821. c194,197
  2822. a{**************************************************}
  2823. c181,181
  2824. c200,218
  2825. a{**************************************************}
  2826. c220,223
  2827. a{**************************************************}
  2828. c186,186
  2829. c226,244
  2830. a{**************************************************}
  2831. c246,249
  2832. a{**************************************************}
  2833. c212,212
  2834. c252,266
  2835. a                FrameToWindR(aperture, tempRect);     { Draw active control }
  2836. c268,274
  2837. a{**************************************************}
  2838. c276,279
  2839. a{**************************************************}
  2840. c238,238
  2841. c282,302
  2842. a{**************************************************}
  2843. c304,310
  2844. a{**************************************************}
  2845. c266,266
  2846. c313,340
  2847. a{**************************************************}
  2848. c342,348
  2849. a{**************************************************}
  2850. c302,302
  2851. c351,380
  2852. a{*** D R A W I N G   M E T H O D S ***}
  2853. c339,340
  2854. c339,339
  2855. a{**************************************************}
  2856. c386,389
  2857. a{**************************************************}
  2858. c340,340
  2859. c392,430
  2860. a{**************************************************}
  2861. c432,435
  2862. a{**************************************************}
  2863. c437,437
  2864. aPROCEDURE CControl.DrawAll (VAR area: Rect);    { Portion which must be drawn        }
  2865. c439,445
  2866. a            BEGIN                            { Control Manager works in Window    }
  2867. a                                        {   coordinates                    }
  2868. c396,396
  2869. c449,456
  2870. a            { temporarily change the control's port so it draws to    }
  2871. a            { the printer rather than onscreen                        }
  2872. c418,418
  2873. a                macControl^^.contrlOwner := qd.thePort;
  2874. c453,453
  2875. c462,466
  2876. a{**************************************************}
  2877. c468,474
  2878. a{**************************************************}
  2879. c418,418
  2880. c477,478
  2881. a        wAperture: Rect;                    { Aperture in Window coords        }
  2882. c442,442
  2883. a        cPreparedView := self;
  2884. c419,419
  2885. c483,486
  2886. a                SetPort(macPort);                     { Use the Port of this Control    }
  2887. a                SetOrigin(0, 0);                     { Must use origin of (0, 0)        }
  2888. c429,429
  2889. a                                                     { Set clipping region to the        }
  2890. a                FrameToWindR(aperture, wAperture);     {   Control's aperture expressed    }
  2891. a                ClipRect(wAperture);                 {   in Window coordinates            }
  2892. c427,427
  2893. c429,429
  2894. c495,495
  2895. a            itsEnvironment.Restore;                     { Restore its drawing environment    }
  2896. c428,429
  2897. a{****************************************************************************}
  2898. c500,502
  2899. a{****************************************************************************}
  2900. c444,444
  2901. c505,510
  2902. a        { get the clipping rectangle in Window coordinates }
  2903. c444,444
  2904. c513,528
  2905. a{*** C L I C K   R E S P O N S E   M E T H O D S ***}
  2906. c459,459
  2907. c459,459
  2908. c459,459
  2909. a{**************************************************}
  2910. c534,539
  2911. a{**************************************************}
  2912. c466,466
  2913. c542,562
  2914. a        IF whichPart >= kControlIndicatorPart THEN
  2915. c564,566
  2916. a                origValue := GetControlValue(macControl);
  2917. c494,494
  2918. c569,575
  2919. a                delta := GetControlValue(macControl) - origValue;
  2920. c577,600
  2921. a{**************************************************}
  2922. c602,607
  2923. a{**************************************************}
  2924. c530,530
  2925. c610,614
  2926. a{**************************************************}
  2927. c616,621
  2928. a{**************************************************}
  2929. c541,541
  2930. c624,628
  2931. a{****************************************************************************}
  2932. c630,635
  2933. a{****************************************************************************}
  2934. c637,648
  2935. e
  2936. fCDataFile.p
  2937. x326169527,198871083
  2938. a{****************************************************************************}
  2939. c1,20
  2940. a{****************************************************************************}
  2941. c22,31
  2942. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  2943. c31,31
  2944. a{****************************************************************************}
  2945. c35,37
  2946. a{****************************************************************************}
  2947. c39,44
  2948. a{*** A C C E S S I N G   M E T H O D S ***}
  2949. c44,44
  2950. a{****************************************************************************}
  2951. c48,51
  2952. a{****************************************************************************}
  2953. c53,57
  2954. a{****************************************************************************}
  2955. c59,62
  2956. a{****************************************************************************}
  2957. c64,71
  2958. a{****************************************************************************}
  2959. c73,81
  2960. a{****************************************************************************}
  2961. c83,89
  2962. a{****************************************************************************}
  2963. c91,95
  2964. a{****************************************************************************}
  2965. c97,104
  2966. a{*** O P E N / C L O S E   M E T H O D S ***}
  2967. c104,104
  2968. a{****************************************************************************}
  2969. c108,110
  2970. a{****************************************************************************}
  2971. c112,123
  2972. a{****************************************************************************}
  2973. c125,127
  2974. a{****************************************************************************}
  2975. c129,136
  2976. a            { clear refnum before closing file, in case it fails }
  2977. c138,144
  2978. a{*** R E A D / W R I T E   M E T H O D S ***}
  2979. c126,126
  2980. a{ Length of file in bytes            }
  2981. a{****************************************************************************}
  2982. c149,152
  2983. a{****************************************************************************}
  2984. c154,181
  2985. a{****************************************************************************}
  2986. c183,188
  2987. a{****************************************************************************}
  2988. c190,196
  2989. a{****************************************************************************}
  2990. c198,201
  2991. a{****************************************************************************}
  2992. c203,208
  2993. a            { Number of bytes to write out        }
  2994. c210,211
  2995. a            { Move mark to beginning of file    }
  2996. c213,214
  2997. a            { Write out all the data            }
  2998. c216,217
  2999. a            { Set file length in case previous    }
  3000. a            {   contents was bigger            }
  3001. c220,221
  3002. a            { Force write to disk                }
  3003. c223,226
  3004. a{****************************************************************************}
  3005. c228,231
  3006. a{****************************************************************************}
  3007. c233,240
  3008. e
  3009. fCDecorator.p
  3010. x128424624,93015358
  3011. a{**************************************************}
  3012. c1,12
  3013. a{**************************************************}
  3014. c14,27
  3015. a{**************************************************}
  3016. c29,32
  3017. a{**************************************************}
  3018. c34,41
  3019. a        wWidth := qd.screenBits.bounds.right - qd.screenBits.bounds.left - hLocation - RIGHT_SMARGIN - (MAX_WOFFSETS - 1) * HORIZ_WOFFSET;
  3020. c41,41
  3021. a        wHeight := qd.screenBits.bounds.bottom - qd.screenBits.bounds.top - vLocation - BOTTOM_SMARGIN - (MAX_WOFFSETS - 1) * VERT_WOFFSET;
  3022. c45,46
  3023. a{**************************************************}
  3024. c48,50
  3025. a{**************************************************}
  3026. c46,46
  3027. c53,70
  3028. a{**************************************************}
  3029. c72,76
  3030. a{**************************************************}
  3031. c78,86
  3032. a{**************************************************}
  3033. c88,91
  3034. a{**************************************************}
  3035. c83,83
  3036. c94,104
  3037. a        { normal non-modal windows will be centered both horizontally and    }
  3038. a        { vertically. However, modal windows, e.g. modal dialogs, should     }
  3039. a        { be placed in the top 1/3 of the main screen.                        }
  3040. c93,93
  3041. c109,139
  3042. a        WITH qd.screenBits.bounds DO
  3043. c141,149
  3044. a{**************************************************}
  3045. c151,154
  3046. a{**************************************************}
  3047. c139,139
  3048. c157,162
  3049. e
  3050. fCDesktop.p
  3051. x513848663,329187339
  3052. a{****************************************************************************}
  3053. c1,22
  3054. a{****************************************************************************}
  3055. c24,29
  3056. a    TCL, CWindow, LowMem;
  3057. c28,28
  3058. c32,35
  3059. a    Script;
  3060. c33,33
  3061. c38,40
  3062. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  3063. c37,37
  3064. a{****************************************************************************}
  3065. c44,46
  3066. a{****************************************************************************}
  3067. c42,42
  3068. aPROCEDURE CDesktop.IDesktop (aSupervisor: CBureaucrat); { Supervisor in the command chain    }
  3069. c50,52
  3070. a                                    { Initialize superclass            }
  3071. c54,54
  3072. a                                    { Allocate space for a QD port        }
  3073. c56,57
  3074. a                                    { Initialize QuickDraw port        }
  3075. c59,60
  3076. a        { Make the port rectangle coincide with the bounding box of    }
  3077. a        { the gray region (entire screen excluding the menu bar). Also    }
  3078. a        { adjust the origin so that the local coords of this port are    }
  3079. a        { the same as global coords.                                    }
  3080. c57,57
  3081. c66,70
  3082. a                                    { Make the clipping and visible    }
  3083. a                                    {   regions same as the grayRgn    }
  3084. c73,78
  3085. a                                    { Initialize our window list        }
  3086. c80,85
  3087. a{****************************************************************************}
  3088. c87,89
  3089. a{****************************************************************************}
  3090. c91,95
  3091. a        DisposePtr(Ptr(macPort));
  3092. c97,101
  3093. a{****************************************************************************}
  3094. c103,107
  3095. a{****************************************************************************}
  3096. c100,100
  3097. aPROCEDURE CDesktop.DispatchClick (VAR macEvent: EventRecord); { Mouse down event record            }
  3098. c111,111
  3099. a        thePart: Integer;        { Location of mouse click            }
  3100. a        macWindow: WindowPtr;    { Window where click occurred        }
  3101. a        theWindow: CWindow;    { Corresponding window object        }
  3102. c115,125
  3103. a    {    Check for any click the could potentially deactivate a window     }
  3104. a    {    that wants to be modal. Menu bar clicks are OK because            }
  3105. a    {    menus should be accessible from modal dialogs.                    }
  3106. c100,100
  3107. c130,144
  3108. a                                    { Click on insignificant area of    }
  3109. a                                    {   the Desktop                    }
  3110. c125,125
  3111. a                    CountClicks(self, macEvent);
  3112. c149,151
  3113. a            inMenuBar:            { Selection from a menu            }
  3114. c144,144
  3115. c154,156
  3116. a                                        { A selection was made. Execute    }
  3117. a                                        {   the corresponding command.        }
  3118. c159,159
  3119. a                                { Unhighlight the menu title        }
  3120. c161,165
  3121. a                                    { Click inside a DA window            }
  3122. c129,129
  3123. c168,174
  3124. a                                    { This is an inactive window or    }
  3125. a                                    {   an underlying floater            }
  3126. c141,141
  3127. c178,179
  3128. a            { Exit here unless window want to    }
  3129. a            {   responding to the click.        }
  3130. c182,184
  3131. a                            ELSE                                {   process activating click        }
  3132. c186,189
  3133. a                        { Window handles clicks. Make sure    }
  3134. a                        {   all windows are updated before    }
  3135. a                        {    responding to the click            }
  3136. c147,147
  3137. c194,197
  3138. a                                    { Window ignores clicks. Handle    }
  3139. a                                    {   same as a click on the desktop    }
  3140. c163,163
  3141. a                        CountClicks(self, macEvent);
  3142. c202,219
  3143. a{****************************************************************************}
  3144. c221,223
  3145. a{****************************************************************************}
  3146. c174,174
  3147. aPROCEDURE CDesktop.DoMouseUp (VAR macEvent: EventRecord); { Mouse up event record    }
  3148. c177,177
  3149. c228,228
  3150. a            { Null Method                        }
  3151. c218,219
  3152. c183,183
  3153. a{****************************************************************************}
  3154. c234,236
  3155. a{****************************************************************************}
  3156. aPROCEDURE CDesktop.DispatchCursor (where: Point; { Mouse location in Global coords    }
  3157. a                                mouseRgn: RgnHandle);                            { Region containing the mouse        }
  3158. c183,183
  3159. c241,242
  3160. a        macWindow: WindowPtr;    { Window containing the mouse        }
  3161. a        theWindow: CWindow;        { Corresponding window object        }
  3162. a        thePart: Integer;        { Part of window containing mouse    }
  3163. c246,250
  3164. a                            { Do nothing if we are not the        }
  3165. a                            {   foreground process                }
  3166. a                            { or the cursor is hidden            }
  3167. c193,193
  3168. a        IF gInBackground THEN
  3169. c256,261
  3170. a                            { Determine which window contains    }
  3171. a                            {   the mouse                        }
  3172. c200,200
  3173. c265,267
  3174. a                            { Mouse is within the content        }
  3175. a                            {   region of a window. Check if    }
  3176. a                            {   that window is active.            }
  3177. c206,206
  3178. c272,277
  3179. a                            { Window containing the mouse is    }
  3180. a                            {   active. Tell it to adjust the    }
  3181. a                            {   cursor shape.                    }
  3182. c281,282
  3183. a                            { cursor over inactive window        }
  3184. c284,288
  3185. a                                { Use arrow cursor in menu bar        }
  3186. a                SetCursor(qd.arrow);
  3187. a                mbarRect := qd.screenBits.bounds;
  3188. c292,296
  3189. a                            { All checks have failed. Mouse is    }
  3190. a                            { in some insignificant area of    }
  3191. a                            { the Desktop                        }
  3192. c300,306
  3193. a{****************************************************************************}
  3194. c308,311
  3195. a{****************************************************************************}
  3196. c232,232
  3197. aPROCEDURE CDesktop.AdjustCursor (where: Point;    { Mouse location in global coords    }
  3198. a                                mouseRgn: RgnHandle);    { Region containing the mouse        }
  3199. c241,241
  3200. c317,319
  3201. a        SetCursor(qd.arrow);
  3202. c321,322
  3203. a                                        { A Window is active, so subtract    }
  3204. a                                        {   its content region from the    }
  3205. a                                        {   desktop                        }
  3206. c326,329
  3207. a                                        { There's no active window, so        }
  3208. a                                        {   cursor has the same shape over    }
  3209. a                                        {   the entire desktop                }
  3210. c247,247
  3211. c334,337
  3212. a{****************************************************************************}
  3213. c339,341
  3214. a {****************************************************************************}
  3215. c254,254
  3216. c344,353
  3217. a{****************************************************************************}
  3218. c355,358
  3219. a{****************************************************************************}
  3220. c271,271
  3221. c361,373
  3222. a{****************************************************************************}
  3223. c375,377
  3224. a {****************************************************************************}
  3225. c379,390
  3226. a{****************************************************************************}
  3227. c392,394
  3228. a{ {****************************************************************************}
  3229. c304,304
  3230. c397,410
  3231. a{****************************************************************************}
  3232. c412,414
  3233. a {****************************************************************************}
  3234. c318,318
  3235. c417,422
  3236. a{****************************************************************************}
  3237. c424,426
  3238. a{****************************************************************************}
  3239. c333,333
  3240. aPROCEDURE CDesktop.AddWind (theWindow: CWindow); { Window object to add        }
  3241. c345,345
  3242. c431,435
  3243. a{****************************************************************************}
  3244. c437,439
  3245. a{****************************************************************************}
  3246. c337,337
  3247. aPROCEDURE CDesktop.RemoveWind (theWindow: CWindow); { Window object to remove        }
  3248. c345,345
  3249. c444,444
  3250. a                                    { Hide window before removing it    }
  3251. c446,451
  3252. a{   regular window                    }
  3253. a{)
  3254. c454,454
  3255. a{         }
  3256. a{****************************************************************************}
  3257. c457,459
  3258. a{****************************************************************************}
  3259. c352,352
  3260. aPROCEDURE CDesktop.SelectWind (theWindow: CWindow); { Window to select        }
  3261. c352,352
  3262. c364,364
  3263. c465,466
  3264. a                    { This is already the top window    }
  3265. c356,356
  3266. c469,470
  3267. a                        { A DA is on top                    }
  3268. a                        {   Make this the active window    }
  3269. c358,358
  3270. c474,475
  3271. a        ELSE                        { This is not the current top one    }
  3272. c366,366
  3273. c478,479
  3274. a                            { Move this one to the front        }
  3275. c481,489
  3276. a                            { Deactivate the former top        }
  3277. c491,494
  3278. a                                { Mark it as the top regular        }
  3279. c496,504
  3280. a{****************************************************************************}
  3281. c506,508
  3282. a{****************************************************************************}
  3283. c510,513
  3284. a                                { Make window visible                }
  3285. c515,520
  3286. a                                {   Deactivate former top window    }
  3287. c522,522
  3288. a                                { There may be a new top window    }
  3289. a                                {   Activate this window            }
  3290. c525,530
  3291. a{ Set internal flag so our new top    }
  3292. a{   window will become active if    }
  3293. a{   the DA quits                    }
  3294. a{ Our new top window needs to be    }
  3295. a{   activated                        }
  3296. a{****************************************************************************}
  3297. c537,539
  3298. a{****************************************************************************}
  3299. aPROCEDURE CDesktop.HideWind (theWindow: CWindow); { Window to hide                    }
  3300. c511,511
  3301. c543,548
  3302. a                                    { This was the top window            }
  3303. a                                    { Find the new top top window        }
  3304. c551,554
  3305. a                                    { A DA is now on top                }
  3306. c556,556
  3307. a                        LMSetCurActivate(WindowRef(frontWind));
  3308. c558,568
  3309. a{****************************************************************************}
  3310. c570,572
  3311. a{****************************************************************************}
  3312. aPROCEDURE CDesktop.DragWind (theWindow: CWindow;    { Window to drag            }
  3313. a                            VAR macEvent: EventRecord);                            { Associated mouse down event        }
  3314. c511,511
  3315. c577,578
  3316. a                                { For an underlying window, bring    }
  3317. a                                {   it to the front (unless the    }
  3318. a                                {   command key is down) before    }
  3319. a                                {   dragging it                    }
  3320. c583,586
  3321. a                                { Let user drag window, but leave    }
  3322. a                                {   a margin so window doesn't get    }
  3323. a                                {   dragged too far off the screen    }
  3324. c441,441
  3325. c591,596
  3326. a{****************************************************************************}
  3327. c598,600
  3328. a{****************************************************************************}
  3329. c602,606
  3330. a{****************************************************************************}
  3331. c608,611
  3332. a{****************************************************************************}
  3333. c613,614
  3334. a                        { Return instance variable            }
  3335. c616,618
  3336. a{ Return copy of instance variable    }
  3337. a{****************************************************************************}
  3338. c621,623
  3339. a{****************************************************************************}
  3340. c625,629
  3341. a{****************************************************************************}
  3342. c631,633
  3343. a {****************************************************************************}
  3344. c635,639
  3345. a{****************************************************************************}
  3346. c641,644
  3347. a {****************************************************************************}
  3348. c646,651
  3349. a{****************************************************************************}
  3350. c653,656
  3351. a{****************************************************************************}
  3352. c658,664
  3353. a{****************************************************************************}
  3354. c666,668
  3355. a{ {****************************************************************************}
  3356. c670,675
  3357. a{**************************************************}
  3358. c677,680
  3359. a{**************************************************}
  3360. c528,528
  3361. c683,686
  3362. a{**************************************************}
  3363. c688,691
  3364. a{**************************************************}
  3365. c528,528
  3366. c694,700
  3367. e
  3368. fCDirector.p
  3369. x509919902,400700206
  3370. a{****************************************************************************}
  3371. c1,22
  3372. a{****************************************************************************}
  3373. c24,32
  3374. a{****************************************************************************}
  3375. c34,39
  3376. a{****************************************************************************}
  3377. c41,43
  3378. a                        { Initialize Superclass            }
  3379. c45,46
  3380. a        aSupervisor.AddDirector(self);
  3381. a                        { No window yet                    }
  3382. c49,49
  3383. a                        { Can't be active with no window    }
  3384. c51,51
  3385. a                        { Make self Gopher upon activate    }
  3386. a        itsGopher := self;
  3387. c46,46
  3388. c55,58
  3389. a{****************************************************************************}
  3390. c60,62
  3391. a {****************************************************************************}
  3392. c64,67
  3393. a        CDirectorOwner(itsSupervisor).RemoveDirector(self);
  3394. c69,71
  3395. a{****************************************************************************}
  3396. c73,75
  3397. a {****************************************************************************}
  3398. c77,88
  3399. a{****************************************************************************}
  3400. c90,92
  3401. a {****************************************************************************}
  3402. c94,101
  3403. a{****************************************************************************}
  3404. c103,105
  3405. a{****************************************************************************}
  3406. c107,110
  3407. a                                { Turn on active flag                }
  3408. c112,112
  3409. a                                { Set the gopher unless its window    }
  3410. a                                {   floats                }
  3411. c115,121
  3412. a        CDirectorOwner(itsSupervisor).ActivateDirector(self);
  3413. c100,101
  3414. a{****************************************************************************}
  3415. c126,128
  3416. a{****************************************************************************}
  3417. c130,133
  3418. a                                { Turn off active flag                }
  3419. c135,135
  3420. a                                { Inactive Director can't be the    }
  3421. a                                {   gopher            }
  3422. a                IF (gGopher = self) THEN
  3423. c116,116
  3424. c140,143
  3425. a        CDirectorOwner(itsSupervisor).DeactivateDirector(self);
  3426. c123,124
  3427. a{****************************************************************************}
  3428. c148,150
  3429. a{****************************************************************************}
  3430. c152,154
  3431. a                        { If director is currently active    }
  3432. c132,133
  3433. c158,159
  3434. a                        { Visually deactivate its window    }
  3435. a                        {   This has the side effect of    }
  3436. a                        {   deactivating the Director also    }
  3437. c163,163
  3438. a                        { Restore active flag so Director    }
  3439. a                        {    will reactivate when the        }
  3440. a                        {    application resumes            }
  3441. c167,172
  3442. a{****************************************************************************}
  3443. c174,176
  3444. a{****************************************************************************}
  3445. c178,180
  3446. a                                { If we were active before suspend    }
  3447. c156,157
  3448. c184,185
  3449. a                                {   We're not really active yet    }
  3450. c187,187
  3451. a                                {   Visually activate window        }
  3452. c189,194
  3453. a{****************************************************************************}
  3454. c196,198
  3455. a{****************************************************************************}
  3456. c172,172
  3457. c201,201
  3458. aFUNCTION CDirector.Close (quitting: Boolean): Boolean; { Is this part of a quit sequence?    }
  3459. c203,213
  3460. a        { if we're already in the middle of processing a Close    }
  3461. a        { message then we just return failure for the new one. }
  3462. c172,172
  3463. c217,222
  3464. a    { use an exception handler to reset the alreadyClosing }
  3465. a    { flag if an exception occurs.                            }
  3466. c194,194
  3467. c226,237
  3468. a                Free;            { Closing means Disposing            }
  3469. c192,192
  3470. c194,194
  3471. c241,244
  3472. a{****************************************************************************}
  3473. c246,251
  3474. a{****************************************************************************}
  3475. c253,267
  3476. a{****************************************************************************}
  3477. c269,271
  3478. a{****************************************************************************}
  3479. c273,277
  3480. a{****************************************************************************}
  3481. c279,281
  3482. a{****************************************************************************}
  3483. c283,287
  3484. a{****************************************************************************}
  3485. c289,291
  3486. a{****************************************************************************}
  3487. c293,296
  3488. a        CDirectorOwner(itsSupervisor).ActivateDirector(self);
  3489. c243,244
  3490. a{****************************************************************************}
  3491. c301,303
  3492. a{****************************************************************************}
  3493. c305,308
  3494. a        CDirectorOwner(itsSupervisor).DeactivateDirector(self);
  3495. c266,267
  3496. a{****************************************************************************}
  3497. c313,315
  3498. a{****************************************************************************}
  3499. c317,321
  3500. a{****************************************************************************}
  3501. c323,325
  3502. a{****************************************************************************}
  3503. c265,265
  3504. c328,332
  3505. a{****************************************************************************}
  3506. c334,336
  3507. a{****************************************************************************}
  3508. c277,277
  3509. c339,346
  3510. a{****************************************************************************}
  3511. c348,352
  3512. a{****************************************************************************}
  3513. c287,287
  3514. c355,362
  3515. a             { When a bureaucrat becomes the gopher, it automatically        }
  3516. a             { sends the bureaucratIsGopher update to all its dependents    }
  3517. a             { and up the chain of command. When a director receives this    }
  3518. a             { update, the bureacrat could be a pane in the director's        }
  3519. a             { window, a subdirector, a subdirector's window, a pane in    }
  3520. a             { a subdirector's window, or potentially any other bureaucrat    }
  3521. a             { the application may have placed in the chain of command.    }
  3522. a             {                                                                }
  3523. a             { The purpose of itsGopher is to "remember" which bureaucrat    }
  3524. a             { is supposed to become the gopher when the director's window    }
  3525. a             { is made active. Since subdirectors have their own itsGopher,}
  3526. a             { and we don't want to set the gopher to panes in windows that}
  3527. a             { aren't active, we must filter out bureaucrats that we don't }
  3528. a             { want itsGopher to point to.                                    }
  3529. c294,294
  3530. c378,379
  3531. a                         { itsGopher shouldn't be a subdirector }
  3532. a                         { don't change itsGopher                }
  3533. c382,384
  3534. a                      { itsGopher should only reference panes in the    }
  3535. a                      { directors window(s).                            }
  3536. c299,299
  3537. c388,390
  3538. a                ELSE        { this is some other bureaucrat }
  3539. c392,397
  3540. a{****************************************************************************}
  3541. c399,402
  3542. a{****************************************************************************}
  3543. c311,311
  3544. c405,406
  3545. a        OwnsWindow := (aWindow <> NIL) & (aWindow.GetSupervisor = self);
  3546. c321,321
  3547. c320,321
  3548. a{****************************************************************************}
  3549. c412,413
  3550. a{****************************************************************************}
  3551. c321,321
  3552. c416,421
  3553. a            ignore := self.Close(kNotQuitting);
  3554. c331,332
  3555. c332,332
  3556. c426,426
  3557. e
  3558. fCDirectorOwner.p
  3559. x247856157,409201631
  3560. a{****************************************************************************}
  3561. c1,11
  3562. a{****************************************************************************}
  3563. c13,22
  3564. a{****************************************************************************}
  3565. c24,26
  3566. a{****************************************************************************}
  3567. c28,33
  3568. a{****************************************************************************}
  3569. c35,37
  3570. a{****************************************************************************}
  3571. c39,52
  3572. a{****************************************************************************}
  3573. c54,56
  3574. a{****************************************************************************}
  3575. c58,68
  3576. a{****************************************************************************}
  3577. c70,73
  3578. a{****************************************************************************}
  3579. c75,81
  3580. a{****************************************************************************}
  3581. c83,85
  3582. a{****************************************************************************}
  3583. c87,92
  3584. a{****************************************************************************}
  3585. c94,96
  3586. a{****************************************************************************}
  3587. c98,99
  3588. a        {)
  3589. c101,101
  3590. a{         }
  3591. c103,113
  3592. a        {)
  3593. c115,115
  3594. a{         }
  3595. c99,99
  3596. a{****************************************************************************}
  3597. c119,121
  3598. a{****************************************************************************}
  3599. c107,107
  3600. c124,132
  3601. a                                { Tell all directors we are back }
  3602. a                                {   in control                        }
  3603. c135,138
  3604. a{****************************************************************************}
  3605. c140,142
  3606. a{****************************************************************************}
  3607. c144,148
  3608. a{****************************************************************************}
  3609. c150,153
  3610. a{****************************************************************************}
  3611. c155,169
  3612. a                            { removing last director might dispose}
  3613. a                            { the list}
  3614. c172,179
  3615. a{****************************************************************************}
  3616. c181,183
  3617. a{****************************************************************************}
  3618. c185,194
  3619. e
  3620. fCDocument.p
  3621. x385061706,488063920
  3622. a{****************************************************************************}
  3623. c1,22
  3624. a{****************************************************************************}
  3625. c24,29
  3626. a    TCL, Printing;
  3627. c28,28
  3628. c32,33
  3629. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  3630. c31,31
  3631. c33,33
  3632. a{****************************************************************************}
  3633. c38,44
  3634. a{****************************************************************************}
  3635. c46,46
  3636. a                                printable: Boolean);    { Is document printable?            }
  3637. c48,51
  3638. a                            { Initialize superclass            }
  3639. c53,81
  3640. a{****************************************************************************}
  3641. c83,85
  3642. a{****************************************************************************}
  3643. c87,94
  3644. a{****************************************************************************}
  3645. c96,98
  3646. a{****************************************************************************}
  3647. c100,110
  3648. a{****************************************************************************}
  3649. c112,114
  3650. a{****************************************************************************}
  3651. c116,121
  3652. a                ignore := self.Close(FALSE);
  3653. c110,110
  3654. c124,134
  3655. a                    IF (CautionAlert(ALRTrevert, NIL) = ok) THEN
  3656. c136,160
  3657. a{****************************************************************************}
  3658. c162,164
  3659. a{****************************************************************************}
  3660. c166,191
  3661. a{****************************************************************************}
  3662. c193,195
  3663. a{****************************************************************************}
  3664. aFUNCTION CDocument.Close (quitting: Boolean): Boolean; { Is this part of a quit sequence?    }
  3665. c198,200
  3666. a                                { Is it OK to close document?        }
  3667. c202,203
  3668. a                                { Yes. Close associated file.        }
  3669. c205,208
  3670. a                                { Document has been closed            }
  3671. c210,212
  3672. a                                { User does not want to close        }
  3673. a                                {   the Document                    }
  3674. c215,218
  3675. a{****************************************************************************}
  3676. c220,223
  3677. a{****************************************************************************}
  3678. c225,228
  3679. a{****************************************************************************}
  3680. c230,233
  3681. a{****************************************************************************}
  3682. c235,239
  3683. a{ Closing Window closes Document    }
  3684. a{****************************************************************************}
  3685. c242,246
  3686. a{****************************************************************************}
  3687. c248,254
  3688. a{*** P R I N T I N G   M E T H O D S ***}
  3689. c228,228
  3690. a{****************************************************************************}
  3691. c258,260
  3692. a{****************************************************************************}
  3693. c262,282
  3694. a{****************************************************************************}
  3695. c284,288
  3696. a{****************************************************************************}
  3697. c290,305
  3698. a{****************************************************************************}
  3699. c307,315
  3700. a{****************************************************************************}
  3701. c317,326
  3702. a                                { firstPage must be less than or    }
  3703. a                                {   equal to lastPage. Swap values    }
  3704. a                                {   otherwise.                        }
  3705. c330,335
  3706. a                                { Can't print more pages than are    }
  3707. a                                {   contained in the document        }
  3708. c338,344
  3709. a{****************************************************************************}
  3710. c346,352
  3711. a{****************************************************************************}
  3712. c319,319
  3713. c355,363
  3714. a{****************************************************************************}
  3715. c365,367
  3716. a{****************************************************************************}
  3717. c326,326
  3718. c370,377
  3719. a{*** F I L I N G   M E T H O D S ***}
  3720. c344,344
  3721. a{****************************************************************************}
  3722. c381,384
  3723. a{****************************************************************************}
  3724. c344,344
  3725. c387,388
  3726. a            { Null Method                        }
  3727. c343,344
  3728. a{****************************************************************************}
  3729. c393,396
  3730. a{****************************************************************************}
  3731. c398,400
  3732. a            { Null Method                        }
  3733. c362,363
  3734. a{****************************************************************************}
  3735. c405,408
  3736. a{****************************************************************************}
  3737. c410,414
  3738. a{****************************************************************************}
  3739. c416,420
  3740. a{****************************************************************************}
  3741. c422,423
  3742. a        macSFReply: SFReply;            { Standard File reply record        }
  3743. c371,371
  3744. a                                    { Let user enter a file name        }
  3745. c427,432
  3746. a        ELSE                                { User cancelled SaveAs dialog box    }
  3747. c373,373
  3748. c435,441
  3749. a{****************************************************************************}
  3750. c443,446
  3751. a{****************************************************************************}
  3752. c448,449
  3753. a        corner: Point;        { Top left corner of dialog box    }
  3754. a        origName: Str255;    { Default name for file            }
  3755. a        prompt: StringHandle;    { Prompt string                    }
  3756. c388,388
  3757. c386,386
  3758. a                            { Center dialog box on the screen    }
  3759. c456,465
  3760. a{****************************************************************************}
  3761. c467,470
  3762. a{****************************************************************************}
  3763. c472,481
  3764. a                                    { If Document has changed ...        }
  3765. c483,489
  3766. a                    index := strQUITTING
  3767. c491,491
  3768. a                    index := strCLOSING;
  3769. c438,438
  3770. c494,495
  3771. a                                        { Ask user if s/he want to save    }
  3772. c497,503
  3773. a                                    { Save Document before closing it    }
  3774. c505,508
  3775. a                                    { Abort the close                    }
  3776. c510,511
  3777. a                                    { If answer is NO, we don't need    }
  3778. a                                    {   to do anything here            }
  3779. c514,516
  3780. a{****************************************************************************}
  3781. c518,520
  3782. a{****************************************************************************}
  3783. c522,523
  3784. a                                    { 1st choice: name of its file        }
  3785. c525,526
  3786. a                                    { 2nd choice: name of its window    }
  3787. c528,529
  3788. a                                    { 3rd choice: NULL string            }
  3789. c531,534
  3790. a{****************************************************************************}
  3791. c536,539
  3792. a{****************************************************************************}
  3793. c541,563
  3794. a{****************************************************************************}
  3795. c565,568
  3796. a{****************************************************************************}
  3797. c570,577
  3798. a        ignore := itsPrinter.IPrinter(self, NIL);
  3799. c515,516
  3800. c493,493
  3801. c582,582
  3802. e
  3803. fCEditText.p
  3804. x66371549,386097490
  3805. a{****************************************************************************}
  3806. c1,33
  3807. a{****************************************************************************}
  3808. c35,40
  3809. a    TCL, Scrap;
  3810. c39,39
  3811. c43,50
  3812. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  3813. c48,48
  3814. a{****************************************************************************}
  3815. c54,56
  3816. a{****************************************************************************}
  3817. c58,72
  3818. a{****************************************************************************}
  3819. c74,76
  3820. a{****************************************************************************}
  3821. c78,86
  3822. a{*** M O U S E   A N D   K E Y S T R O K E   M E T H O D S ***}
  3823. a{****************************************************************************}
  3824. c89,91
  3825. a{****************************************************************************}
  3826. c93,94
  3827. a        macFontInfo: FontInfo;        { Info about size of font            }
  3828. a        clickLoopUPP: TEClickLoopUPP;
  3829. c96,98
  3830. a                                { Create the TE record }
  3831. c100,101
  3832. a                                { OK to just call GetFontInfo here    }
  3833. a                                {   since the new TE Record uses    }
  3834. a                                {   the same font characteristics    }
  3835. a                                {   as the current port            }
  3836. c106,114
  3837. c118,118
  3838. a        clickLoopUPP := NewTEClickLoopProc(@TEClickLoop);    
  3839. a        TESetClickLoop(clickLoopUPP, macTE);
  3840. c116,121
  3841. a{****************************************************************************}
  3842. c123,125
  3843. a{****************************************************************************}
  3844. aPROCEDURE CEditText.DoClick (hitPt: Point;            { Mouse location in Frame coords    }
  3845. a                                modifierKeys: Integer; { State of modifier keys        }
  3846. a                                when: Longint);        { Tick time of mouse click            }
  3847. c130,149
  3848. a        IF (NOT editable) & (gGopher = self) THEN
  3849. c151,157
  3850. a{****************************************************************************}
  3851. c159,161
  3852. a{****************************************************************************}
  3853. c163,167
  3854. a                { check whether the char will exceed TE capacity }
  3855. c143,143
  3856. c170,177
  3857. a{****************************************************************************}
  3858. c179,185
  3859. a{****************************************************************************}
  3860. c187,200
  3861. a            { check for available memory, but only for insertions}
  3862. a            { of more than one character}
  3863. c177,177
  3864. c204,208
  3865. a                DisposeHandle(h);
  3866. c210,212
  3867. a{****************************************************************************}
  3868. c214,217
  3869. a{****************************************************************************}
  3870. c219,223
  3871. a        gEditText := self;
  3872. c211,212
  3873. a{****************************************************************************}
  3874. c228,231
  3875. a{****************************************************************************}
  3876. c233,241
  3877. a{****************************************************************************}
  3878. c243,246
  3879. a{****************************************************************************}
  3880. c248,264
  3881. a{****************************************************************************}
  3882. c266,268
  3883. a{****************************************************************************}
  3884. c270,274
  3885. a                    { Must make sure that the            }
  3886. a                    {   current selection is not        }
  3887. a                    {   hilited on the print out        }
  3888. c260,260
  3889. c279,285
  3890. a{****************************************************************************}
  3891. c287,289
  3892. a{****************************************************************************}
  3893. c291,293
  3894. a                { TCL 1.1: call CalcTERects rather than setting }
  3895. a                { the viewRect directly }
  3896. c296,300
  3897. a            { Restore active state                }
  3898. c302,306
  3899. a{****************************************************************************}
  3900. c308,310
  3901. a{****************************************************************************}
  3902. c312,322
  3903. a{=============================================================================}
  3904. c324,326
  3905. a{ =============================================================================}
  3906. c328,342
  3907. a{****************************************************************************}
  3908. c344,346
  3909. a{****************************************************************************}
  3910. c348,361
  3911. a{****************************************************************************}
  3912. c363,365
  3913. a{****************************************************************************}
  3914. c367,368
  3915. a                { Get rid of TextEdit record        }
  3916. c370,371
  3917. a                { Pass message on to superclass    }
  3918. c373,375
  3919. a{*** D I S P L A Y   M E T H O D S ***}
  3920. c322,322
  3921. a{****************************************************************************}
  3922. c379,381
  3923. a{****************************************************************************}
  3924. c383,384
  3925. a        macTE^^.inPort := qd.thePort;
  3926. c386,389
  3927. a{****************************************************************************}
  3928. c391,393
  3929. a{****************************************************************************}
  3930. c395,407
  3931. a{*** P R I N T I N G   M E T H O D S ***}
  3932. c361,361
  3933. a{****************************************************************************}
  3934. c411,413
  3935. a{****************************************************************************}
  3936. c415,420
  3937. a                            { Must change the port in the TE    }
  3938. a                            {   record to the current port,    }
  3939. a                            {   which will be a printer port    }
  3940. a                            {   page. It will be restored by    }
  3941. a                            {   the DonePrinting() method.        }
  3942. a        macTE^^.inPort := qd.thePort;
  3943. c427,442
  3944. a{*** T E X T   S P E C I F I C A T I O N   M E T H O D S ***}
  3945. c375,375
  3946. a{****************************************************************************}
  3947. c446,449
  3948. a{****************************************************************************}
  3949. c451,453
  3950. a                { Stuff the text in the Mac TE record    }
  3951. c455,456
  3952. a                { Draw the new text                    }
  3953. c458,460
  3954. a{****************************************************************************}
  3955. c462,464
  3956. a{****************************************************************************}
  3957. c466,470
  3958. a{*** T E X T   C H A R A C T E R I S T I C S   M E T H O D S ***}
  3959. c407,407
  3960. c407,407
  3961. a{****************************************************************************}
  3962. c475,477
  3963. a{****************************************************************************}
  3964. c479,480
  3965. a        macFontInfo: FontInfo; { Info about size of font            }
  3966. c401,401
  3967. c483,493
  3968. a{****************************************************************************}
  3969. c495,497
  3970. a{****************************************************************************}
  3971. c499,507
  3972. a            { Toggle style characteristic        }
  3973. c442,442
  3974. c428,428
  3975. c511,522
  3976. a{****************************************************************************}
  3977. c524,526
  3978. a{****************************************************************************}
  3979. c528,535
  3980. a{****************************************************************************}
  3981. c537,539
  3982. a{****************************************************************************}
  3983. c541,546
  3984. a{****************************************************************************}
  3985. c548,550
  3986. a{****************************************************************************}
  3987. c552,553
  3988. a        TESetAlignment(anAlignment, macTE);
  3989. c489,489
  3990. c469,470
  3991. a{****************************************************************************}
  3992. c559,561
  3993. a{****************************************************************************}
  3994. c563,581
  3995. a{****************************************************************************}
  3996. c583,585
  3997. a{****************************************************************************}
  3998. c587,588
  3999. a        macFontInfo: FontInfo; { Info about size of font            }
  4000. a        extra: Integer;        { Extra space between lines        }
  4001. c502,502
  4002. c592,623
  4003. a{****************************************************************************}
  4004. c625,630
  4005. a{****************************************************************************}
  4006. c632,638
  4007. a                                { Get info about font                }
  4008. c640,642
  4009. a{*** C A L I B R A T I N G   M E T H O D S ***}
  4010. c546,546
  4011. a{****************************************************************************}
  4012. c646,651
  4013. a{****************************************************************************}
  4014. c653,675
  4015. a{****************************************************************************}
  4016. c677,687
  4017. a{****************************************************************************}
  4018. c689,698
  4019. a{****************************************************************************}
  4020. c700,704
  4021. a{****************************************************************************}
  4022. c706,728
  4023. a{****************************************************************************}
  4024. c730,736
  4025. a{****************************************************************************}
  4026. c738,772
  4027. a{****************************************************************************}
  4028. c774,776
  4029. a{****************************************************************************}
  4030. c778,782
  4031. a{****************************************************************************}
  4032. c784,788
  4033. a{****************************************************************************}
  4034. c790,797
  4035. a{****************************************************************************}
  4036. c799,801
  4037. a{****************************************************************************}
  4038. c803,811
  4039. a{****************************************************************************}
  4040. c813,815
  4041. a{****************************************************************************}
  4042. c817,822
  4043. a{ TE line count is not correct if    }
  4044. a{   last char is a carriage return    }
  4045. a{****************************************************************************}
  4046. c826,828
  4047. a{****************************************************************************}
  4048. c830,844
  4049. a{****************************************************************************}
  4050. c846,848
  4051. a{****************************************************************************}
  4052. c850,855
  4053. a{****************************************************************************}
  4054. c857,860
  4055. a{****************************************************************************}
  4056. c862,870
  4057. a{****************************************************************************}
  4058. c872,875
  4059. a{****************************************************************************}
  4060. c877,881
  4061. a        Assert(theOffset <= MAXINT);
  4062. c866,866
  4063. c884,887
  4064. a{****************************************************************************}
  4065. c889,891
  4066. a{****************************************************************************}
  4067. c893,909
  4068. a{****************************************************************************}
  4069. c911,915
  4070. a{****************************************************************************}
  4071. c917,949
  4072. a{****************************************************************************}
  4073. c951,953
  4074. a{****************************************************************************}
  4075. c955,966
  4076. e
  4077. fCEnvironment.p
  4078. x455575167,522683783
  4079. a{**************************************************}
  4080. c1,14
  4081. a{**************************************************}
  4082. c16,27
  4083. a{**************************************************}
  4084. c29,33
  4085. a{**************************************************}
  4086. c35,41
  4087. e
  4088. fCError.p
  4089. x423105361,267450719
  4090. a{**************************************************}
  4091. c1,10
  4092. a{**************************************************}
  4093. c12,24
  4094. a{**************************************************}
  4095. c26,31
  4096. a{**************************************************}
  4097. c33,58
  4098. a        IF StopAlert(ALRTsevereErr, NIL) = cancel THEN
  4099. c60,71
  4100. a{**************************************************}
  4101. c73,83
  4102. a{**************************************************}
  4103. c85,111
  4104. a{**************************************************}
  4105. c113,117
  4106. a{**************************************************}
  4107. c110,110
  4108. c120,133
  4109. a{**************************************************}
  4110. c135,141
  4111. a{**************************************************}
  4112. c132,132
  4113. c144,212
  4114. a                left := (qd.screenBits.bounds.right - (right - left)) DIV 2;
  4115. a                top := (qd.screenBits.bounds.bottom - (bottom - top)) DIV 3;
  4116. c202,202
  4117. c216,233
  4118. a        DisposeDialog(theDialog);
  4119. c235,239
  4120. e
  4121. fCFile.p
  4122. x283253580,268535356
  4123. a{****************************************************************************}
  4124. c1,19
  4125. a{****************************************************************************}
  4126. c21,30
  4127. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  4128. a{****************************************************************************}
  4129. c33,35
  4130. a{****************************************************************************}
  4131. c37,38
  4132. a    { Clear instance variables            }
  4133. c40,44
  4134. a{ Close Mac File                    }
  4135. a{****************************************************************************}
  4136. c47,49
  4137. a{****************************************************************************}
  4138. c51,53
  4139. a        INHERITED Free;        { Pass message on to superclass    }
  4140. c55,56
  4141. a{****************************************************************************}
  4142. c58,60
  4143. a{****************************************************************************}
  4144. c62,63
  4145. a    { Null Method                        }
  4146. c55,56
  4147. a{*** S P E C I F Y I N G   M E T H O D S ***}
  4148. a{****************************************************************************}
  4149. c69,71
  4150. a{****************************************************************************}
  4151. c73,74
  4152. a{ Null Method                        }
  4153. c66,66
  4154. c65,66
  4155. a{****************************************************************************}
  4156. c80,82
  4157. a{****************************************************************************}
  4158. c84,93
  4159. a{****************************************************************************}
  4160. c95,97
  4161. a{****************************************************************************}
  4162. c99,108
  4163. a{****************************************************************************}
  4164. c110,112
  4165. a{****************************************************************************}
  4166. c114,125
  4167. a{****************************************************************************}
  4168. c127,129
  4169. a{****************************************************************************}
  4170. c131,141
  4171. a{****************************************************************************}
  4172. c143,148
  4173. a{****************************************************************************}
  4174. c150,163
  4175. a            { copy back specification}
  4176. c165,170
  4177. a        { raise exception if this is a directory, we only handle files}
  4178. c172,175
  4179. a{*** A C C E S S I N G   M E T H O D S ***}
  4180. c168,168
  4181. a{****************************************************************************}
  4182. c179,181
  4183. a{****************************************************************************}
  4184. c183,187
  4185. a{****************************************************************************}
  4186. c189,191
  4187. a{****************************************************************************}
  4188. c193,202
  4189. a{*** F I L I N G   M E T H O D S ***}
  4190. c173,173
  4191. c173,173
  4192. a{****************************************************************************}
  4193. c207,209
  4194. a{****************************************************************************}
  4195. a    PROCEDURE CFile.CreateNew (creator: OSType;            { Creator signature                }
  4196. a                                    fType: OSType);    { File type                    }
  4197. c175,175
  4198. c184,184
  4199. c215,217
  4200. a{****************************************************************************}
  4201. c219,221
  4202. a{****************************************************************************}
  4203. c223,224
  4204. a                { Must close file before we can    }
  4205. a                {   throw it out                    }
  4206. c187,187
  4207. c228,231
  4208. a{****************************************************************************}
  4209. c233,235
  4210. a{****************************************************************************}
  4211. c237,242
  4212. a{****************************************************************************}
  4213. c244,246
  4214. a{****************************************************************************}
  4215. c248,256
  4216. a{****************************************************************************}
  4217. c258,260
  4218. a{****************************************************************************}
  4219. c262,268
  4220. e
  4221. fCList.p
  4222. x407163535,157999271
  4223. a{****************************************************************************}
  4224. c1,18
  4225. a{****************************************************************************}
  4226. c20,29
  4227. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  4228. c29,29
  4229. a{****************************************************************************}
  4230. c33,35
  4231. a{****************************************************************************}
  4232. c37,38
  4233. a                        { Initialize superclass            }
  4234. c40,42
  4235. a{****************************************************************************}
  4236. c44,46
  4237. a{****************************************************************************}
  4238. c48,53
  4239. a{****************************************************************************}
  4240. c55,57
  4241. a{****************************************************************************}
  4242. c59,66
  4243. a{****************************************************************************}
  4244. c68,70
  4245. a{****************************************************************************}
  4246. aPROCEDURE CList.InsertAfter (theObject: CObject; { Object to insert in the list        }
  4247. a                                afterObject: CObject); { Object to insert it after        }
  4248. c74,76
  4249. a            { Find location of afterObject        }
  4250. c63,63
  4251. c79,84
  4252. a{****************************************************************************}
  4253. c86,88
  4254. a{****************************************************************************}
  4255. c90,96
  4256. a{****************************************************************************}
  4257. c98,100
  4258. a{****************************************************************************}
  4259. c102,103
  4260. a        i: Longint;        { Index into list                    }
  4261. c93,93
  4262. a                        { Find location of the object        }
  4263. c107,108
  4264. a                        { If it's not already in front ...    }
  4265. c110,117
  4266. a{****************************************************************************}
  4267. c119,121
  4268. a{****************************************************************************}
  4269. aPROCEDURE CList.SendBack (theObject: CObject); { Object to move to the back        }
  4270. c103,103
  4271. a        i: Longint;            { Index into list                    }
  4272. c105,105
  4273. a                            { Find location of the object        }
  4274. c107,108
  4275. a                            { If it's not already in back ...    }
  4276. c131,137
  4277. a{****************************************************************************}
  4278. c139,141
  4279. a{****************************************************************************}
  4280. aPROCEDURE CList.MoveUp (theObject: CObject); { Object to move up in list        }
  4281. c124,124
  4282. a        i: Longint;    { Index into list                    }
  4283. c126,126
  4284. a                            { Find location of object            }
  4285. c128,128
  4286. a                            { If it's not at the front ...        }
  4287. c150,156
  4288. a{****************************************************************************}
  4289. c158,160
  4290. a{****************************************************************************}
  4291. aPROCEDURE CList.MoveDown (theObject: CObject); { Object to move down                }
  4292. c144,144
  4293. c129,129
  4294. a        i: Longint;        { Index into list                    }
  4295. c146,146
  4296. a                        { Find locaton of object            }
  4297. c148,148
  4298. c136,136
  4299. a                        { If it's not at the back ...      }
  4300. c131,132
  4301. c173,179
  4302. a{****************************************************************************}
  4303. c181,184
  4304. a{****************************************************************************}
  4305. aPROCEDURE CList.MoveToIndex (theObject: CObject; { Object to move within the list    }
  4306. a                                index: Longint);                            { Index at which to move object    }
  4307. c144,144
  4308. c155,155
  4309. a        i: Longint;    { Index into the list                }
  4310. c146,146
  4311. a                    { Find location of the object        }
  4312. c148,148
  4313. c194,199
  4314. a{****************************************************************************}
  4315. c201,203
  4316. a{****************************************************************************}
  4317. c205,209
  4318. a{****************************************************************************}
  4319. c211,213
  4320. a{****************************************************************************}
  4321. c215,219
  4322. a{****************************************************************************}
  4323. c221,223
  4324. a{****************************************************************************}
  4325. c225,227
  4326. a                            { If index is out of range            }
  4327. a                            {   pass back NIL                    }
  4328. c230,232
  4329. a                            { Do direct indexing into list        }
  4330. c234,236
  4331. a{****************************************************************************}
  4332. c238,241
  4333. a{****************************************************************************}
  4334. c243,245
  4335. a                        { Index is one greater than the    }
  4336. a                        {   offset, which is zero-based    }
  4337. c189,189
  4338. c249,251
  4339. a{****************************************************************************}
  4340. c253,256
  4341. a{****************************************************************************}
  4342. c258,263
  4343. a{****************************************************************************}
  4344. c265,268
  4345. a{****************************************************************************}
  4346. c270,276
  4347. a{****************************************************************************}
  4348. c278,281
  4349. a{****************************************************************************}
  4350. c283,313
  4351. a{****************************************************************************}
  4352. c315,318
  4353. a{****************************************************************************}
  4354. c320,353
  4355. e
  4356. fCMBarChore.p
  4357. x501534292,375460494
  4358. a{**************************************************}
  4359. c1,12
  4360. a{**************************************************}
  4361. c14,25
  4362. a{**************************************************}
  4363. c27,30
  4364. a{**************************************************}
  4365. c32,40
  4366. a        gBartender.UpdateMenuBar;          { Redraw to reflect changes             }
  4367. a        gBartender.choreAssigned := FALSE;    { Clear chore from gBartender        }
  4368. c40,40
  4369. c44,46
  4370. e
  4371. fCMouseTask.p
  4372. x423756360,213636088
  4373. a{*****************************************************************************
  4374. c1,8
  4375. a *****************************************************************************}
  4376. c10,18
  4377. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  4378. c20,20
  4379. a{*****************************************************************************
  4380. c22,24
  4381. a *****************************************************************************}
  4382. c26,32
  4383. a{*** M O U S E   T R A C K I N G   M E T H O D S ***}
  4384. c32,32
  4385. a{*****************************************************************************
  4386. c36,42
  4387. a *****************************************************************************}
  4388. c44,45
  4389. a            { Null Method                        }
  4390. c47,48
  4391. a{*****************************************************************************
  4392. c50,55
  4393. a *****************************************************************************}
  4394. c57,59
  4395. a        { Null Method                        }
  4396. c61,62
  4397. a{*****************************************************************************
  4398. c64,67
  4399. a *****************************************************************************}
  4400. c69,72
  4401. a        { Null Method                        }
  4402. c61,62
  4403. c76,76
  4404. e
  4405. fCObject.p
  4406. x204522897,292771999
  4407. a{****************************************************************************}
  4408. c1,17
  4409. a{****************************************************************************}
  4410. c19,28
  4411. a{****************************************************************************}
  4412. c30,32
  4413. a{****************************************************************************}
  4414. c34,35
  4415. a        DisposeHandle(Handle(self));
  4416. c37,38
  4417. a{****************************************************************************}
  4418. c40,42
  4419. a{****************************************************************************}
  4420. c44,51
  4421. a            { Objects are just handles            }
  4422. a        copyOfObject := Handle(self);
  4423. c54,60
  4424. a{****************************************************************************}
  4425. c62,65
  4426. a{****************************************************************************}
  4427. c67,68
  4428. a        kLockMask = $80;    { bit 7 of handle state is set when locked }
  4429. c70,73
  4430. a            { test lock bit of handle state }
  4431. c75,75
  4432. a        locked := BAND(HGetState(Handle(self)), kLockMask) <> 0;
  4433. c77,79
  4434. a                    HLock(Handle(self))
  4435. c81,81
  4436. a                    HUnlock(Handle(self));
  4437. c83,90
  4438. a{****************************************************************************}
  4439. c92,93
  4440. a{****************************************************************************}
  4441. c86,86
  4442. c96,103
  4443. e
  4444. fCPane.p
  4445. x236012649,16759377
  4446. a{****************************************************************************}
  4447. c1,30
  4448. a{****************************************************************************}
  4449. c32,50
  4450. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  4451. c49,49
  4452. a{****************************************************************************}
  4453. c54,56
  4454. a{****************************************************************************}
  4455. c58,66
  4456. a        { Initialize superclass            }
  4457. c68,70
  4458. a        { Set instance variables            }
  4459. c68,68
  4460. c73,83
  4461. a        { Extra initialization                }
  4462. c83,83
  4463. c86,91
  4464. a{****************************************************************************}
  4465. c93,95
  4466. a{****************************************************************************}
  4467. aPROCEDURE CPane.IViewTemp (anEnclosure: CView;                         { Enclosing view                    }
  4468. a                                aSupervisor: CBureaucrat;            { Boss in chain of command            }
  4469. a                                viewData: Ptr);                    { Template with View data            }
  4470. c100,104
  4471. a    { Initialize superclass            }
  4472. c94,94
  4473. c107,108
  4474. a                                { Set instance vars from template    }
  4475. c110,117
  4476. a                                { Extra initialization                }
  4477. c119,121
  4478. a{****************************************************************************}
  4479. c123,125
  4480. a{****************************************************************************}
  4481. c127,131
  4482. a                                    { This is a subview of enclosure    }
  4483. a        itsEnclosure.AddSubview(self);
  4484. c134,135
  4485. a                                    { Set up Frame coordinates            }
  4486. c137,137
  4487. a                                    { Determine visible portion        }
  4488. c139,142
  4489. a{****************************************************************************}
  4490. c144,146
  4491. a{****************************************************************************}
  4492. c148,149
  4493. a                                    { Throw out drawing environment    }
  4494. c151,151
  4495. a                                    { Throw out pane border            }
  4496. c153,154
  4497. a        { makes sure that the last undo task is disposed. Since the     }
  4498. a        { undo tasks usually have references back to this pane,         }
  4499. a        { it would be bad if this pane was disposed and the task was     }
  4500. a        { not informed.                                                }
  4501. c131,131
  4502. c160,161
  4503. a                Notify(NIL);                    { the document disposes of the task     }
  4504. c163,165
  4505. a                                    { Pass message on to superclass    }
  4506. c167,169
  4507. a{*** A C C E S S I N G   M E T H O D S ***}
  4508. c142,142
  4509. a{****************************************************************************}
  4510. c173,178
  4511. a{****************************************************************************}
  4512. c180,182
  4513. a                                    { Set top left coordinates            }
  4514. c184,185
  4515. a                                    { Set right and bottom using the    }
  4516. a                                    {   current width and height        }
  4517. c188,192
  4518. a{****************************************************************************}
  4519. c194,196
  4520. a{****************************************************************************}
  4521. c198,199
  4522. a                                { Return copy of instance variable    }
  4523. c201,203
  4524. a{****************************************************************************}
  4525. c205,207
  4526. a{****************************************************************************}
  4527. c209,210
  4528. a                                { Return instance variables        }
  4529. c212,215
  4530. a{****************************************************************************}
  4531. c217,221
  4532. a{****************************************************************************}
  4533. c223,224
  4534. a                                { Return instance variables        }
  4535. c226,229
  4536. a{****************************************************************************}
  4537. c231,234
  4538. a{****************************************************************************}
  4539. c236,237
  4540. a                                { Return copy of instance variable    }
  4541. c239,241
  4542. a{****************************************************************************}
  4543. c243,245
  4544. a{****************************************************************************}
  4545. c247,252
  4546. a{****************************************************************************}
  4547. c254,256
  4548. a{****************************************************************************}
  4549. c258,261
  4550. a                                { Convert to Frame coordinates        }
  4551. c263,263
  4552. a                                { Is point inside aperture?        }
  4553. c265,267
  4554. a{****************************************************************************}
  4555. c269,271
  4556. a{****************************************************************************}
  4557. c273,282
  4558. a{****************************************************************************}
  4559. c284,287
  4560. a{****************************************************************************}
  4561. c289,294
  4562. a{****************************************************************************}
  4563. c296,298
  4564. a{****************************************************************************}
  4565. c300,304
  4566. a{****************************************************************************}
  4567. c306,308
  4568. a{****************************************************************************}
  4569. c310,322
  4570. a                                            { clear old border            }
  4571. c324,326
  4572. a                { Can't assume that the pane's enclosure is a CPane    }
  4573. a                { so RefreshRect is not safe    here.                    }
  4574. c329,334
  4575. a                                            { draw new border            }
  4576. c324,325
  4577. c329,329
  4578. c331,331
  4579. c340,342
  4580. a                                        { the pane itself is not invalid }
  4581. c344,347
  4582. a{****************************************************************************}
  4583. c349,351
  4584. a{****************************************************************************}
  4585. c353,362
  4586. a{****************************************************************************}
  4587. c364,364
  4588. a{****************************************************************************}
  4589. c366,370
  4590. a{*** D I S P L A Y   M E T H O D S ***}
  4591. c304,304
  4592. a{****************************************************************************}
  4593. c374,376
  4594. a{****************************************************************************}
  4595. c378,387
  4596. a{****************************************************************************}
  4597. c389,391
  4598. a{****************************************************************************}
  4599. c393,402
  4600. a{*** S I Z E   A N D   L O C A T I O N   M E T H O D S ***}
  4601. c326,326
  4602. a{****************************************************************************}
  4603. c406,408
  4604. a{****************************************************************************}
  4605. c410,418
  4606. a                                    { Determine location of pane in    }
  4607. a                                    {   Window coords                    }
  4608. c347,347
  4609. c422,428
  4610. a{****************************************************************************}
  4611. c430,432
  4612. a{****************************************************************************}
  4613. aPROCEDURE CPane.Offset (hOffset: Longint; { Pixels to offset vertically        }
  4614. c435,435
  4615. a                                redraw: Boolean);                         { Redraw Pane or not?                }
  4616. c354,354
  4617. c438,440
  4618. a        {)
  4619. c442,444
  4620. a{         }
  4621. c446,453
  4622. a            BEGIN    { Force redraw of area covered by    }
  4623. a                            {   current location of pane        }
  4624. c383,385
  4625. c370,370
  4626. a                        { Change location of the pane        }
  4627. c461,464
  4628. a                        { Keep hEncl, and vEncl up to date when pane is moved.        }
  4629. a                        { Thanks to Eric Olson for the fix.                        }
  4630. c375,375
  4631. c468,470
  4632. a                        { Visible portion of pane could    }
  4633. a                        {   change as a result of a shift    }
  4634. a                        {   in its location                }
  4635. c474,477
  4636. a                        { Redraw pane at its new location    }
  4637. c383,385
  4638. c387,387
  4639. c483,484
  4640. a                        { Inform subviews of the move        }
  4641. a                        {   so they can adjust their        }
  4642. a                        {   locations                        }
  4643. c488,491
  4644. a{****************************************************************************}
  4645. c493,497
  4646. a{****************************************************************************}
  4647. c402,402
  4648. c500,500
  4649. a                                redraw: Boolean);    { Redraw Pane or not?        }
  4650. c413,413
  4651. a        oldAperture: LongRect;            { Save old aperture                }
  4652. c504,506
  4653. a        {)
  4654. c508,508
  4655. a{         }
  4656. c404,404
  4657. c404,404
  4658. c407,407
  4659. c416,416
  4660. c514,518
  4661. a                            { Force redraw of area currently    }
  4662. a                            {   occupied by the pane            }
  4663. a                            {  and redraw border if there is one }
  4664. c456,458
  4665. a                            { Change dimensions of pane        }
  4666. c526,526
  4667. a                            { Determine new aperture           }
  4668. c474,474
  4669. c453,453
  4670. c477,477
  4671. a                            { Force draw of pane at new size    }
  4672. c421,421
  4673. c456,456
  4674. c534,535
  4675. a                            { If autoRefresh is FALSE (and        }
  4676. a                            {   other safety checks), we do    }
  4677. a                            {   not want to redraw the area    }
  4678. a                            {   which is common to the old and    }
  4679. a                            {   new pane size. Note that the    }
  4680. a                            {   Refresh method will have set    }
  4681. a                            {   the port for us already.        }
  4682. c427,427
  4683. c544,570
  4684. a{****************************************************************************}
  4685. c572,577
  4686. a{****************************************************************************}
  4687. aPROCEDURE CPane.AdjustToEnclosure (deltaEncl: Rect); { Change in enclosure's frame        }
  4688. c502,502
  4689. a        delta: Rect;        { Change in this pane's frame        }
  4690. a        hOffset: Integer;    { Horizontal offset in location    }
  4691. a        vOffset: Integer;    { Vertical offset in location        }
  4692. a        moved: Boolean;    { Do we need to move the pane?        }
  4693. a        sized: Boolean;    { Do we need to size the pane?        }
  4694. c513,513
  4695. c587,596
  4696. a                IF (sized) THEN            { Pane must be moved and sized        }
  4697. c545,545
  4698. c599,604
  4699. a                        Offset(hOffset, vOffset, TRUE);    { Move pane by offsetting location    }
  4700. c564,564
  4701. c607,607
  4702. a        ELSE IF (sized) THEN            { Change size of Pane                }
  4703. c484,484
  4704. c610,613
  4705. a                { Pane stays the same, but change    }
  4706. a                {   in enclosure may change its    }
  4707. a                {   aperture                        }
  4708. c617,620
  4709. a{****************************************************************************}
  4710. c622,624
  4711. a{****************************************************************************}
  4712. c626,654
  4713. a{****************************************************************************}
  4714. c656,658
  4715. a{****************************************************************************}
  4716. c660,688
  4717. a{****************************************************************************}
  4718. c690,693
  4719. a{****************************************************************************}
  4720. c695,708
  4721. a{*** A D A P T I N G   M E T H O D S ***}
  4722. c569,569
  4723. a{****************************************************************************}
  4724. c712,718
  4725. a{****************************************************************************}
  4726. c720,747
  4727. a{****************************************************************************}
  4728. c749,755
  4729. a{****************************************************************************}
  4730. c757,784
  4731. a{****************************************************************************}
  4732. c786,791
  4733. a{****************************************************************************}
  4734. c793,816
  4735. a{*** D R A W I N G   M E T H O D S ***}
  4736. c688,688
  4737. a{****************************************************************************}
  4738. c820,838
  4739. a{****************************************************************************}
  4740. c840,841
  4741. a        { Null Method                        }
  4742. c707,708
  4743. c702,702
  4744. a{****************************************************************************}
  4745. c847,857
  4746. a{****************************************************************************}
  4747. c708,708
  4748. c860,868
  4749. a            { area is in Window coordinates, put it into Frame or QD coordinates    }
  4750. c730,730
  4751. c871,871
  4752. a            OffsetRect(tmpArea, qd.thePort^.portRect.left, qd.thePort^.portRect.top)
  4753. c873,883
  4754. a                { clip area to aperture of this view before drawing subviews}
  4755. c885,890
  4756. a                    { no need to SectRect here, already done in Pane_Draw }
  4757. c892,895
  4758. a{****************************************************************************}
  4759. c897,899
  4760. a{****************************************************************************}
  4761. c901,904
  4762. a            { Refresh frame of Pane            }
  4763. c747,747
  4764. c907,910
  4765. a{****************************************************************************}
  4766. c912,917
  4767. a{****************************************************************************}
  4768. c919,926
  4769. a{****************************************************************************}
  4770. c928,934
  4771. a{****************************************************************************}
  4772. aPROCEDURE CPane.RefreshRect (area: Rect); { Area in Frame coordinates        }
  4773. c795,795
  4774. c938,943
  4775. a{****************************************************************************}
  4776. c945,947
  4777. a{****************************************************************************}
  4778. c949,961
  4779. a{*** P R I N T I N G   M E T H O D S ***}
  4780. c802,802
  4781. a{****************************************************************************}
  4782. c965,968
  4783. a{****************************************************************************}
  4784. c970,973
  4785. a            { Tell the printer we have only one page, and let it use the    }
  4786. a            { printable page area for the strip sizes                        }
  4787. c816,816
  4788. c977,981
  4789. a{ so they will be passed a local copy of the range        }
  4790. a{****************************************************************************}
  4791. c984,986
  4792. a{****************************************************************************}
  4793. c988,1001
  4794. a            { subviews should not be able to modify the page range    }
  4795. c1003,1008
  4796. a{ Number of the page to print        }
  4797. a{ Width of printed page in pixels    }
  4798. a{ Height of page in pixels            }
  4799. a{ setup class variable cPageArea with portion of page to be printed }
  4800. a{ but is the same size as the page.                                }
  4801. a{****************************************************************************}
  4802. c1015,1019
  4803. a{****************************************************************************}
  4804. c1021,1030
  4805. a            { pass a rectangle to DrawAll that is based on the frame top left    }
  4806. c1032,1041
  4807. a{****************************************************************************}
  4808. c1043,1045
  4809. a{****************************************************************************}
  4810. c1047,1062
  4811. a{****************************************************************************}
  4812. c1064,1068
  4813. a{****************************************************************************}
  4814. c1070,1085
  4815. a                    clipR := cPageArea; { cPageArea is area in Window coordinates }
  4816. c1087,1087
  4817. a                        OffsetRect(clipR, qd.thePort^.portRect.left, qd.thePort^.portRect.top)
  4818. c1089,1098
  4819. a{*** C A L I B R A T I N G   M E T H O D S ***}
  4820. c910,910
  4821. a{****************************************************************************}
  4822. c1102,1132
  4823. a{****************************************************************************}
  4824. c1134,1137
  4825. a        IF (cPreparedView = self) THEN
  4826. c1139,1146
  4827. a                { Use the Port of this Pane        }
  4828. a                { Set to Frame coordinates            }
  4829. c961,961
  4830. c1150,1151
  4831. a                { Setup the origin for the Pane and clip drawing            }
  4832. a                { to the visible portion.                                    }
  4833. c961,961
  4834. c1155,1170
  4835. a{****************************************************************************}
  4836. c1172,1174
  4837. a{****************************************************************************}
  4838. c1176,1182
  4839. a{****************************************************************************}
  4840. c1184,1192
  4841. a{****************************************************************************}
  4842. c1194,1198
  4843. a        frame.left := 0;                { Frame defines pane coords        }
  4844. a        frame.top := 0;                { Top left of frame is at (0, 0)    }
  4845. c1201,1203
  4846. a                                    { Determine location of pane in    }
  4847. a                                    {   Window coords                    }
  4848. c1008,1008
  4849. c1207,1208
  4850. a                                    { Origin maps between Frame and    }
  4851. a                                    {   Window coords. Origin is the    }
  4852. a                                    {   top left corner of the window    }
  4853. a                                    {   expressed in Frame coords        }
  4854. c1008,1008
  4855. c1214,1219
  4856. a{****************************************************************************}
  4857. c1221,1230
  4858. a{****************************************************************************}
  4859. c1232,1234
  4860. a                    { Adjust dimensions of the pane    }
  4861. c1236,1237
  4862. a                    { Origin moves with the top left    }
  4863. a                    {   corner of the pane                }
  4864. a                    { Put top left of frame at (0, 0)    }
  4865. c1241,1250
  4866. a{****************************************************************************}
  4867. c1252,1255
  4868. a{****************************************************************************}
  4869. c1257,1262
  4870. a        {)
  4871. c1264,1264
  4872. a{         }
  4873. c1266,1271
  4874. a            { TCL 1.1 Save the previous aperture before recalculating.}
  4875. a            { Since a pane's aperture is the intersection of its frame}
  4876. a            { and its enclosure's aperture, we know that if this}
  4877. a            { pane's aperture didn't change, then none if its}
  4878. a            { subpane's apertures will change either. }
  4879. a            { So we recalc the aperture, and if it doesn't change,}
  4880. a            { there's no need to pass the message to the subpanes}
  4881. a            { Thanks to Doug Wyatt for the tip.}
  4882. c1054,1054
  4883. a            { Get enclosure's aperture            }
  4884. c1054,1054
  4885. c1283,1283
  4886. a                                    { Aperture is the frame restricted    }
  4887. a                                    {   by the enclosure's aperture    }
  4888. c1286,1286
  4889. a                                    { Convert it to Frame coords        }
  4890. c1288,1291
  4891. a                                    { Pass it on to subviews   }
  4892. c1293,1296
  4893. a{*** C O O R D I N A T E  T R A N S F O R M   M E T H O D S ***}
  4894. c1098,1098
  4895. a{****************************************************************************}
  4896. c1300,1302
  4897. a{****************************************************************************}
  4898. c1304,1310
  4899. a{****************************************************************************}
  4900. c1312,1314
  4901. a{****************************************************************************}
  4902. c1316,1322
  4903. a{****************************************************************************}
  4904. c1324,1326
  4905. a{****************************************************************************}
  4906. c1328,1335
  4907. a{****************************************************************************}
  4908. c1337,1339
  4909. a{****************************************************************************}
  4910. c1341,1347
  4911. a{****************************************************************************}
  4912. c1349,1352
  4913. a{****************************************************************************}
  4914. c1354,1363
  4915. a{****************************************************************************}
  4916. c1365,1368
  4917. a{****************************************************************************}
  4918. c1370,1378
  4919. a{****************************************************************************}
  4920. c1380,1383
  4921. a{****************************************************************************}
  4922. c1385,1394
  4923. a{****************************************************************************}
  4924. c1396,1399
  4925. a{****************************************************************************}
  4926. c1401,1409
  4927. a{****************************************************************************}
  4928. c1411,1413
  4929. a{****************************************************************************}
  4930. c1169,1169
  4931. c1416,1425
  4932. a{****************************************************************************}
  4933. c1427,1430
  4934. a{****************************************************************************}
  4935. c1432,1445
  4936. a                    { ??? We could call WaitNextEvent    }
  4937. a                    {   here to give background apps    }
  4938. a                    {   some CPU time. However, this    }
  4939. a                    {   makes mouse tracking a little    }
  4940. a                    {   bit sluggish.                    }
  4941. c1203,1203
  4942. a        WHILE StillDown DO    { Track while button is pressed    }
  4943. c1453,1471
  4944. a{****************************************************************************}
  4945. c1473,1480
  4946. a{****************************************************************************}
  4947. c1482,1489
  4948. a                framePt.h := framePt.h - qd.thePort^.portRect.left;
  4949. a                framePt.v := framePt.v - qd.thePort^.portRect.top;
  4950. c1492,1496
  4951. a{****************************************************************************}
  4952. c1498,1500
  4953. a{****************************************************************************}
  4954. c1502,1509
  4955. a                OffsetLongRect(frameRect, -qd.thePort^.portRect.left, -qd.thePort^.portRect.top);
  4956. c1492,1493
  4957. c1513,1515
  4958. a{****************************************************************************}
  4959. c1517,1519
  4960. a{****************************************************************************}
  4961. c1521,1528
  4962. a                qdPt.h := qdPt.h + qd.thePort^.portRect.left;
  4963. a                qdPt.v := qdPt.v + qd.thePort^.portRect.top;
  4964. c1492,1493
  4965. c1533,1535
  4966. a{****************************************************************************}
  4967. c1537,1539
  4968. a{****************************************************************************}
  4969. c1541,1548
  4970. a                OffsetRect(qdRect, qd.thePort^.portRect.left, qd.thePort^.portRect.top);
  4971. c1492,1493
  4972. c1552,1554
  4973. a{****************************************************************************}
  4974. c1556,1559
  4975. a{****************************************************************************}
  4976. c1561,1576
  4977. a{****************************************************************************}
  4978. c1578,1584
  4979. a{****************************************************************************}
  4980. c1586,1593
  4981. a{**************************************************}
  4982. c1595,1598
  4983. a{**************************************************}
  4984. c1322,1322
  4985. c1601,1608
  4986. a{**************************************************}
  4987. c1610,1613
  4988. a{**************************************************}
  4989. c1335,1335
  4990. c1616,1622
  4991. a{**************************************************}
  4992. c1624,1627
  4993. a{**************************************************}
  4994. c1347,1347
  4995. c1630,1632
  4996. a        paneArea: Rect;        { Area in Pane's Frame coords        }
  4997. c1634,1638
  4998. a                            { Only draw if pane is visible        }
  4999. c1363,1363
  5000. c1641,1645
  5001. a                { Get the pane's frame in window coordinates        }
  5002. a                { then ask the border for the border rect.            }
  5003. a                { If that rect intersects the area to draw, then    }
  5004. a                { go ahead and draw the border                        }
  5005. c1363,1363
  5006. c1651,1666
  5007. a                    { DrawAll always receives the area in Window             }
  5008. a                    { coordinates. If we're not printing, clip the            }
  5009. a                    { area to the aperture.                                }
  5010. c1670,1670
  5011. a                { See if area intersects the        }
  5012. a                {   aperture of the Pane            }
  5013. a                {   be drawn.                        }
  5014. c1674,1675
  5015. a                    { Some portion of this Pane must    }
  5016. a                    { be drawn                            }
  5017. c1678,1681
  5018. a                ELSE                { printing, don't clip the area        }
  5019. c1645,1645
  5020. c1684,1692
  5021. e
  5022. fCPaneBorder.p
  5023. x290790889,135427883
  5024. a{****************************************************************************}
  5025. c1,17
  5026. a{****************************************************************************}
  5027. c19,28
  5028. a{****************************************************************************}
  5029. c30,34
  5030. a{****************************************************************************}
  5031. c36,49
  5032. a        SetPattern(qd.black);
  5033. c51,53
  5034. a{****************************************************************************}
  5035. c55,58
  5036. a{****************************************************************************}
  5037. c60,107
  5038. a            SetPattern(qd.black);
  5039. c101,101
  5040. c110,125
  5041. a{****************************************************************************}
  5042. c127,129
  5043. a{****************************************************************************}
  5044. c131,135
  5045. a{****************************************************************************}
  5046. c137,139
  5047. a{****************************************************************************}
  5048. c141,145
  5049. a{****************************************************************************}
  5050. c147,164
  5051. a{****************************************************************************}
  5052. c166,169
  5053. a        { Shadowing only applies to the kBorderFrame setting }
  5054. c171,174
  5055. a{****************************************************************************}
  5056. c176,178
  5057. a{****************************************************************************}
  5058. c180,184
  5059. a{****************************************************************************}
  5060. c186,188
  5061. a{****************************************************************************}
  5062. c190,196
  5063. a{****************************************************************************}
  5064. c198,200
  5065. a{****************************************************************************}
  5066. c202,207
  5067. a{****************************************************************************}
  5068. c209,214
  5069. a{****************************************************************************}
  5070. c216,226
  5071. a{****************************************************************************}
  5072. c228,230
  5073. a{****************************************************************************}
  5074. c232,239
  5075. a{****************************************************************************}
  5076. c241,244
  5077. a{****************************************************************************}
  5078. c246,251
  5079. a{****************************************************************************}
  5080. c253,255
  5081. a{****************************************************************************}
  5082. c257,262
  5083. a{****************************************************************************}
  5084. c264,271
  5085. a{****************************************************************************}
  5086. c273,277
  5087. a{****************************************************************************}
  5088. c279,281
  5089. a{****************************************************************************}
  5090. c283,288
  5091. a{****************************************************************************}
  5092. c290,294
  5093. a{****************************************************************************}
  5094. c296,331
  5095. a{****************************************************************************}
  5096. c333,335
  5097. a{****************************************************************************}
  5098. c337,393
  5099. e
  5100. fCPanorama.p
  5101. x488006883,202516241
  5102. a{****************************************************************************}
  5103. c1,28
  5104. a{****************************************************************************}
  5105. c30,40
  5106. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  5107. c40,40
  5108. a{****************************************************************************}
  5109. c44,46
  5110. a{****************************************************************************}
  5111. c48,67
  5112. a{****************************************************************************}
  5113. c69,71
  5114. a{****************************************************************************}
  5115. c67,67
  5116. aPROCEDURE CPanorama.IViewTemp (anEnclosure: CView;            { Enclosing view                    }
  5117. a                                aSupervisor: CBureaucrat;    { Boss in chain of command            }
  5118. a                                viewData: Ptr);                { Template with View data            }
  5119. c77,83
  5120. a                                        { Set instance vars from template    }
  5121. c81,81
  5122. c86,91
  5123. a    {*** A C C E S S I N G   M E T H O D S ***}
  5124. c93,94
  5125. a{****************************************************************************}
  5126. c96,108
  5127. a{****************************************************************************}
  5128. c110,116
  5129. a{****************************************************************************}
  5130. c118,127
  5131. a{****************************************************************************}
  5132. c129,134
  5133. a{****************************************************************************}
  5134. c136,144
  5135. a{****************************************************************************}
  5136. c146,148
  5137. a        { Integer division truncates        }
  5138. a        {   We get the number of complete    }
  5139. a        {   units spanned by the frame        }
  5140. c152,155
  5141. a{****************************************************************************}
  5142. c157,162
  5143. a{****************************************************************************}
  5144. c164,165
  5145. a                { Set instance variable            }
  5146. c167,172
  5147. a{****************************************************************************}
  5148. c174,176
  5149. a{****************************************************************************}
  5150. c178,179
  5151. a                    { Pass back copy of instance var    }
  5152. c181,183
  5153. a{ Set instance variable            }
  5154. a{****************************************************************************}
  5155. c186,190
  5156. a{****************************************************************************}
  5157. c192,194
  5158. a                            { Pass back copy of instance var    }
  5159. c196,200
  5160. a{****************************************************************************}
  5161. c202,204
  5162. a{****************************************************************************}
  5163. c206,211
  5164. a{****************************************************************************}
  5165. c213,216
  5166. a{****************************************************************************}
  5167. c218,225
  5168. a{****************************************************************************}
  5169. c227,229
  5170. a{****************************************************************************}
  5171. c231,232
  5172. a                            { Return copies of instance vars    }
  5173. c234,237
  5174. a{****************************************************************************}
  5175. c239,241
  5176. a{****************************************************************************}
  5177. c243,244
  5178. a                                { Set instance variable            }
  5179. c246,248
  5180. a{****************************************************************************}
  5181. c250,254
  5182. a{****************************************************************************}
  5183. c256,260
  5184. a{****************************************************************************}
  5185. c262,267
  5186. a{****************************************************************************}
  5187. c269,274
  5188. a{*** C A L I B R A T I N G   M E T H O D S ***}
  5189. c237,237
  5190. a{****************************************************************************}
  5191. c278,283
  5192. a{****************************************************************************}
  5193. c237,237
  5194. c286,288
  5195. a                        { Adjust dimensions of the pane    }
  5196. c290,293
  5197. a                        { Shift edges by delta                }
  5198. c295,298
  5199. a                        { Scroll position is tied to the   }
  5200. a                        { left of the frame.               }
  5201. c301,305
  5202. a{*** S C R O L L I N G   M E T H O D S ***}
  5203. c260,260
  5204. c260,260
  5205. a{****************************************************************************}
  5206. c310,315
  5207. a{****************************************************************************}
  5208. c317,359
  5209. a{****************************************************************************}
  5210. c361,364
  5211. a{****************************************************************************}
  5212. c366,377
  5213. a{****************************************************************************}
  5214. c379,382
  5215. a{****************************************************************************}
  5216. c384,385
  5217. a        { Null Method                        }
  5218. c358,359
  5219. a{ Mouse location in Frame coords    }
  5220. a{****************************************************************************}
  5221. c391,394
  5222. a{****************************************************************************}
  5223. c396,453
  5224. a{****************************************************************************}
  5225. c455,458
  5226. a{****************************************************************************}
  5227. c460,461
  5228. a                                VAR macEvent: EventRecord);
  5229. c397,397
  5230. c464,485
  5231. a                        itsScrollPane.DoVertScroll(kControlPageUpPart);
  5232. c487,491
  5233. a                        itsScrollPane.DoVertScroll(kControlPageDownPart);
  5234. c487,488
  5235. c495,499
  5236. a{*** P R I N T I N G   M E T H O D S ***}
  5237. c453,453
  5238. a{****************************************************************************}
  5239. c503,507
  5240. a{****************************************************************************}
  5241. c509,518
  5242. a                    { Get the full extent of the panorama        }
  5243. c520,520
  5244. a                    { determine how many horizontal and         }
  5245. a                    { vertical strips are required                }
  5246. c523,524
  5247. a                    { tell the printer how many strips, strips    }
  5248. a                    { are initially set to page width and        }
  5249. a                    { height                                    }
  5250. c528,532
  5251. a{****************************************************************************}
  5252. c534,536
  5253. a{****************************************************************************}
  5254. c499,499
  5255. c539,541
  5256. a                            { Save current position since it    }
  5257. a                            {   may have to be changed during    }
  5258. a                            {   the print loop                    }
  5259. c545,550
  5260. a{****************************************************************************}
  5261. c552,554
  5262. a{****************************************************************************}
  5263. c499,499
  5264. aPROCEDURE CPanorama.PrintPage (pageNum: Integer; { Number of the page to print        }
  5265. c499,499
  5266. a                                pageWidth: Integer;    { Width of printed page in pixels    }
  5267. a                                pageHeight: Integer;    { Height of page in pixels            }
  5268. c561,571
  5269. a        { scroll to the start of the page    }
  5270. c499,499
  5271. c574,580
  5272. a        { setup class variable cPageArea with portion of page to be printed }
  5273. c499,499
  5274. c583,593
  5275. a{****************************************************************************}
  5276. c595,597
  5277. a{****************************************************************************}
  5278. c512,512
  5279. c600,612
  5280. e
  5281. fCPicture.p
  5282. x227827022,168103664
  5283. a{****************************************************************************}
  5284. c1,15
  5285. a{****************************************************************************}
  5286. c17,26
  5287. a{****************************************************************************}
  5288. c28,30
  5289. a{****************************************************************************}
  5290. c32,49
  5291. a{****************************************************************************}
  5292. c51,53
  5293. a{****************************************************************************}
  5294. aPROCEDURE CPicture.IViewTemp (anEnclosure: CView;            { Enclosing view                    }
  5295. a                                aSupervisor: CBureaucrat;    { Boss in chain of command            }
  5296. a                                viewData: Ptr);                { Template with View data            }
  5297. c58,73
  5298. a{ Set instance vars from template    }
  5299. c75,76
  5300. a{****************************************************************************}
  5301. c78,80
  5302. a{****************************************************************************}
  5303. c82,94
  5304. a{****************************************************************************}
  5305. c96,98
  5306. a{****************************************************************************}
  5307. c94,94
  5308. c101,137
  5309. a{****************************************************************************}
  5310. c139,143
  5311. a{****************************************************************************}
  5312. c145,159
  5313. a                { determine if this picture is from a resource        }
  5314. c159,159
  5315. c162,180
  5316. a{****************************************************************************}
  5317. c182,184
  5318. a{****************************************************************************}
  5319. c186,187
  5320. a                    { Return instance variable            }
  5321. c189,191
  5322. a{****************************************************************************}
  5323. c193,195
  5324. a{****************************************************************************}
  5325. c197,208
  5326. a{****************************************************************************}
  5327. c210,213
  5328. a{****************************************************************************}
  5329. c215,221
  5330. a                                { Boundaries are the same as frame    }
  5331. a                                {   left of the frame                }
  5332. c224,227
  5333. a        ELSE                            { Display picture at normal size    }
  5334. c221,221
  5335. a            { Top left of picture is at top    }
  5336. a            { Put top left of bounds at (0, 0)    }
  5337. a            {   top left may have moved        }
  5338. a            {   only when it is scaled            }
  5339. c208,208
  5340. c235,237
  5341. a                                { Need to reposition picture since    }
  5342. a                                { Size of frame affects picture    }
  5343. c240,244
  5344. a{****************************************************************************}
  5345. c246,248
  5346. a{****************************************************************************}
  5347. c250,251
  5348. a                                { Return instance variable            }
  5349. c253,255
  5350. a{****************************************************************************}
  5351. c257,265
  5352. a{****************************************************************************}
  5353. c234,234
  5354. c268,275
  5355. a{****************************************************************************}
  5356. c277,279
  5357. a{****************************************************************************}
  5358. c281,288
  5359. e
  5360. fCPrinter.p
  5361. x498393156,338268935
  5362. a{****************************************************************************}
  5363. c1,15
  5364. a{****************************************************************************}
  5365. c17,22
  5366. a    TCL, Printing;
  5367. c21,21
  5368. c25,26
  5369. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  5370. c24,24
  5371. a{****************************************************************************}
  5372. c33,42
  5373. a{****************************************************************************}
  5374. c44,64
  5375. a                        PrintDefault(THPrint(aMacTPrint)); { Set default print record values    }
  5376. c66,68
  5377. a                    { Check validity of existing        }
  5378. c70,71
  5379. a        {)
  5380. c73,75
  5381. a{         }
  5382. c77,97
  5383. a{****************************************************************************}
  5384. c99,102
  5385. a{****************************************************************************}
  5386. c104,105
  5387. a        ForgetHandle(macTPrint);        { Throw out Toolbox print record    }
  5388. c107,109
  5389. a    { Pass message on to superclass    }
  5390. c96,97
  5391. a{****************************************************************************}
  5392. c114,120
  5393. a{****************************************************************************}
  5394. c122,125
  5395. a        Assert(NOT printMgrOpen);
  5396. c127,141
  5397. a{****************************************************************************}
  5398. c143,146
  5399. a{****************************************************************************}
  5400. c148,172
  5401. a{****************************************************************************}
  5402. c174,181
  5403. a{****************************************************************************}
  5404. c183,186
  5405. a                                        { Open the printer driver            }
  5406. c188,190
  5407. a                                        { Check validity of print record    }
  5408. c192,194
  5409. a                                        { Close the printer driver            }
  5410. c196,196
  5411. a        GetPrintRecord := macTPrint;        { Return instance variable            }
  5412. c172,172
  5413. c171,172
  5414. c198,198
  5415. a{****************************************************************************}
  5416. c203,218
  5417. a{****************************************************************************}
  5418. aPROCEDURE CPrinter.GetPageInfo (VAR paperRect, { The physical paper size            }
  5419. a                                pageRect: Rect;         { Printable area of the page        }
  5420. a                                VAR hRes,                 { Horizontal resolution            }
  5421. a                                vRes: Integer);            { Vertical resolution                }
  5422. c224,224
  5423. a        recPtr: TPPrint;        { Deference of print record handle    }
  5424. c226,227
  5425. a                            { Open the printer driver            }
  5426. c198,198
  5427. c230,232
  5428. a                                    { Check validity of print record    }
  5429. c198,198
  5430. c235,237
  5431. a        ClosePrintMgr;                    { Close the printer driver            }
  5432. a        IF (macTPrint <> NIL) THEN        { Extract info from print record    }
  5433. c232,232
  5434. c241,247
  5435. a        ELSE        { There is no print record            }
  5436. c232,232
  5437. c250,258
  5438. a{****************************************************************************}
  5439. c260,268
  5440. a{****************************************************************************}
  5441. c270,271
  5442. a        changed: Boolean;    { Has print record changed?        }
  5443. c234,234
  5444. c274,276
  5445. a        IF (OpenPrintMgr(TRUE)) THEN    { Open printer driver                }
  5446. a            BEGIN                            { Toolbox trap posts the dialog    }
  5447. c279,281
  5448. a                { Close the printer driver            }
  5449. c283,288
  5450. a{****************************************************************************}
  5451. c290,294
  5452. a{****************************************************************************}
  5453. c296,301
  5454. a                        { Open printer driver                }
  5455. c303,307
  5456. a                        { Close the printer driver            }
  5457. c273,273
  5458. c283,283
  5459. c311,317
  5460. a{****************************************************************************}
  5461. c319,324
  5462. a{****************************************************************************}
  5463. c326,390
  5464. a                            { Print error before PrClose        }
  5465. c340,340
  5466. c393,394
  5467. a                            { Don't report error if the user    }
  5468. a                            {   aborted the printing            }
  5469. c342,342
  5470. c398,404
  5471. a                    { Close the printer driver            }
  5472. c353,353
  5473. c352,353
  5474. a                    { Reset error code to what it was    }
  5475. a                    {   before closing printer in case    }
  5476. a                    {   Document needs it                }
  5477. c353,353
  5478. c413,418
  5479. a{****************************************************************************}
  5480. c420,424
  5481. a{****************************************************************************}
  5482. c426,430
  5483. a{****************************************************************************}
  5484. c432,435
  5485. a{****************************************************************************}
  5486. c437,442
  5487. a{****************************************************************************}
  5488. c444,446
  5489. a{****************************************************************************}
  5490. c448,457
  5491. a{****************************************************************************}
  5492. c459,461
  5493. a{****************************************************************************}
  5494. c463,469
  5495. a        Assert(printRec <> NIL);
  5496. c471,478
  5497. a{****************************************************************************}
  5498. c480,482
  5499. a{****************************************************************************}
  5500. c484,488
  5501. a        Assert((vStripNum >= 1) & (vStripNum <= itsStripWidths.GetNumItems + 1));
  5502. c490,493
  5503. a{****************************************************************************}
  5504. c495,497
  5505. a{****************************************************************************}
  5506. c499,503
  5507. a        Assert((hStripNum >= 1) & (hStripNum <= itsStripHeights.GetNumItems + 1));
  5508. c505,508
  5509. a{****************************************************************************}
  5510. c510,512
  5511. a{****************************************************************************}
  5512. c514,523
  5513. a{ must have some pixels on a page    }
  5514. a{****************************************************************************}
  5515. c526,528
  5516. a{****************************************************************************}
  5517. c530,532
  5518. a        Assert(aStripWidth > 0);
  5519. c534,539
  5520. a{****************************************************************************}
  5521. c541,543
  5522. a{****************************************************************************}
  5523. c545,553
  5524. a{****************************************************************************}
  5525. c555,557
  5526. a{****************************************************************************}
  5527. c559,561
  5528. a                        { must have some pixels on a page    }
  5529. a        Assert(aStripHeight > 0);
  5530. c564,569
  5531. a{****************************************************************************}
  5532. c571,573
  5533. a{****************************************************************************}
  5534. c575,588
  5535. a{****************************************************************************}
  5536. c590,592
  5537. a{****************************************************************************}
  5538. c594,599
  5539. a        Assert(HavePagination);
  5540. c601,602
  5541. a        Assert(pageNum <= hStrips * vStrips);
  5542. c604,615
  5543. a{****************************************************************************}
  5544. c617,619
  5545. a{****************************************************************************}
  5546. c621,631
  5547. a{****************************************************************************}
  5548. c633,634
  5549. a{****************************************************************************}
  5550. c636,648
  5551. e
  5552. fCRunArray.p
  5553. x116273929,236702407
  5554. a{****************************************************************************}
  5555. c1,25
  5556. a{****************************************************************************}
  5557. c27,36
  5558. a{****************************************************************************}
  5559. c38,40
  5560. a{****************************************************************************}
  5561. c42,48
  5562. a{****************************************************************************}
  5563. c50,53
  5564. a{****************************************************************************}
  5565. c55,59
  5566. a{****************************************************************************}
  5567. c61,69
  5568. a{****************************************************************************}
  5569. c71,76
  5570. a        Assert(item > 0);
  5571. a        Assert(count > 0);
  5572. c79,79
  5573. a        { first insert the value once    }
  5574. c79,79
  5575. c82,85
  5576. a            { Index is out of range. first we clip it to numItems + 1    }
  5577. a            { then, if this is not the first run added, we check if     }
  5578. a            { has the same value as the last run if not we have to add    }
  5579. a            { a new run                                                }
  5580. c79,79
  5581. c91,93
  5582. a                        { insert to last run, just bump runLength }
  5583. c79,79
  5584. c96,103
  5585. a            { Rather than duplicate SetValue here, we just insert it to    }
  5586. a            { the existing run for the given index, i.e. just bump            }
  5587. a            { the runLength and then call SetValue, which will handle        }
  5588. a            { the case where a new run might have to be created            }
  5589. c90,90
  5590. a            { clip item index to size + 1 }
  5591. c90,90
  5592. c111,115
  5593. a            { now insert the rest, if any, once we know the runs won't change    }
  5594. c117,120
  5595. a                Assert(runIndex <> BAD_INDEX);        { it must exist    }
  5596. c99,99
  5597. c123,130
  5598. a{****************************************************************************}
  5599. c132,136
  5600. a{****************************************************************************}
  5601. c138,150
  5602. a        Assert((index > 0) & (index <= itemCount));
  5603. c130,130
  5604. c153,155
  5605. a        { NOTE: runIndex is zero-based, firstInRun, lastInRun, and index    }
  5606. a        { are all one-based.                                                }
  5607. c130,130
  5608. c159,164
  5609. a                { see if the item can go in previous or next run    }
  5610. c149,149
  5611. c167,168
  5612. a                                                    { bump the count }
  5613. c170,173
  5614. a                                    { we no longer need this run }
  5615. c175,176
  5616. a                                    { TCL 1.1.1 DLP 12/9/91 : decrement count for this run }
  5617. c178,184
  5618. a                                    { we no longer need this run }
  5619. c175,176
  5620. a                                    { TCL 1.1.1 DLP 12/9/91 : decrement count for this run }
  5621. c178,178
  5622. c158,158
  5623. c179,179
  5624. c192,193
  5625. a                        { we already know that we couldn't merge the new value }
  5626. a                        { into the previous or next run, so we just change        }
  5627. a                        { the value for this run                                }
  5628. c197,199
  5629. a                        { We have to break the run into two or more runs.        }
  5630. a                        { At this point we know the run size is greater than    }
  5631. a                        { one and, if the item is at the start or end of the    }
  5632. a                        { run, we can't merge it with the previous or next run.}
  5633. a                        { Therefore the item itself starts a new run, and there}
  5634. a                        { may be a new run preceeding or following the item    }
  5635. c164,164
  5636. c168,168
  5637. c166,166
  5638. a                        { check preceeding    run }
  5639. c210,212
  5640. a                                runIndex := runIndex + 1;    { everything just moved down }
  5641. c171,171
  5642. c215,220
  5643. a                        { The item now has the run all to itself. Update the value    }
  5644. a                        { and length.                                                }
  5645. c197,197
  5646. c224,228
  5647. a{****************************************************************************}
  5648. c230,233
  5649. a{****************************************************************************}
  5650. c235,239
  5651. a        Assert((index > 0) & (index <= itemCount));
  5652. c206,206
  5653. c242,245
  5654. a{****************************************************************************}
  5655. c247,249
  5656. a{****************************************************************************}
  5657. c251,256
  5658. a        Assert((index > 0) & (index <= itemCount));
  5659. c206,206
  5660. c242,242
  5661. c260,270
  5662. a{****************************************************************************}
  5663. c272,274
  5664. a{****************************************************************************}
  5665. c276,286
  5666. a{****************************************************************************}
  5667. c288,291
  5668. a{****************************************************************************}
  5669. c293,303
  5670. a            { clip start and end }
  5671. c258,258
  5672. c306,316
  5673. a                    { start and end are in the same run    }
  5674. c270,270
  5675. c319,322
  5676. a                { add in the this run from startIndex down    }
  5677. a                { and then scan thru runs until endIndex    }
  5678. c270,270
  5679. c326,330
  5680. a            { loop over all items, but we'll exit when endIndex is reached }
  5681. c332,336
  5682. a                                { we've found endIndex        }
  5683. c338,344
  5684. a                        Assert(lastThisRun < itemCount);
  5685. c346,350
  5686. a{****************************************************************************}
  5687. c352,356
  5688. a{*****************************************************************************}
  5689. c358,380
  5690. a    { falling out of the loop means aSum was too large or zero runs }
  5691. c382,385
  5692. a{****************************************************************************}
  5693. c387,394
  5694. a{****************************************************************************}
  5695. c396,406
  5696. a                            { switch to zero-based offsets }
  5697. c350,350
  5698. c409,429
  5699. a{****************************************************************************}
  5700. c431,433
  5701. a{****************************************************************************}
  5702. c435,445
  5703. a{****************************************************************************}
  5704. c447,450
  5705. a{****************************************************************************}
  5706. c452,462
  5707. a            { if the deleted run was between two runs with the same value    }
  5708. a            { then we can merge them.                                        }
  5709. c404,404
  5710. c466,473
  5711. a{****************************************************************************}
  5712. c475,478
  5713. a{****************************************************************************}
  5714. c480,490
  5715. e
  5716. fCScrollBar.p
  5717. x235246372,145506308
  5718. a{**************************************************}
  5719. c1,10
  5720. a{**************************************************}
  5721. c12,24
  5722. a{**************************************************}
  5723. c26,29
  5724. a{**************************************************}
  5725. c31,88
  5726. a        itsEnclosure.AddSubview(self);            { This is a subview of enclosure    }
  5727. a        SetControlReference(macControl, longint(self));
  5728. c87,87
  5729. c92,107
  5730. a{**************************************************}
  5731. c109,112
  5732. a{**************************************************}
  5733. c106,106
  5734. c115,149
  5735. a{**************************************************}
  5736. c151,154
  5737. a{**************************************************}
  5738. c148,148
  5739. c157,173
  5740. a{**************************************************}
  5741. c175,179
  5742. a{**************************************************}
  5743. c172,172
  5744. c182,196
  5745. a{**************************************************}
  5746. c198,202
  5747. a{**************************************************}
  5748. c195,195
  5749. c205,214
  5750. a{**************************************************}
  5751. c216,220
  5752. a{**************************************************}
  5753. c213,213
  5754. c223,225
  5755. a            CallTheThumbFunc(self, delta, theThumbFunc);    {   exists; otherwise do nothing    }
  5756. c212,214
  5757. a{**************************************************}
  5758. c231,235
  5759. a{**************************************************}
  5760. c222,222
  5761. aPROCEDURE CScrollBar.SetThumbFunc (aThumbFunc: ControlActionUPP);
  5762. c224,224
  5763. c240,243
  5764. e
  5765. fCScrollPane.p
  5766. x495323502,117696713
  5767. a{****************************************************************************}
  5768. c1,19
  5769. a{****************************************************************************}
  5770. c21,32
  5771. aPROCEDURE SBarThumbFunc (theSBar: ControlHandle;
  5772. c34,38
  5773. aVAR
  5774. a    SBarActionProcUPP : ControlActionUPP;
  5775. a    SBarThumbFuncUPP  : ControlActionUPP;
  5776. c36,36
  5777. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  5778. a{****************************************************************************}
  5779. c41,43
  5780. a{****************************************************************************}
  5781. c45,71
  5782. a{****************************************************************************}
  5783. c73,75
  5784. a{****************************************************************************}
  5785. aPROCEDURE CScrollPane.IViewTemp (anEnclosure: CView; { Enclosing view                    }
  5786. a                                aSupervisor: CBureaucrat;    { Boss in chain of command            }
  5787. a                                viewData: Ptr);            { Template with View data            }
  5788. c70,70
  5789. c81,84
  5790. a                                    { Initialize Superclass            }
  5791. c86,86
  5792. a                                    { Set instance vars from template    }
  5793. c80,80
  5794. c89,92
  5795. a                                    { Extra initialization                }
  5796. c94,96
  5797. a{****************************************************************************}
  5798. c98,100
  5799. a{****************************************************************************}
  5800. c102,115
  5801. a        { Since global data is zeroed by the loader. }
  5802. a        IF SBarActionProcUPP = NIL THEN
  5803. a            SBarActionProcUPP := NewControlActionProc(@SBarActionProc);
  5804. a        IF SBarThumbFuncUPP = NIL THEN
  5805. a            SBarThumbFuncUPP := NewControlActionProc(@SBarThumbFunc);
  5806. c115,119
  5807. a                itsHorizSBar.IScrollBar(self, self, HORIZONTAL, width - shrinkage, frame.left, frame.bottom - SBARSIZE);
  5808. a                itsHorizSBar.SetActionProc(SBarActionProcUPP);
  5809. a                itsHorizSBar.SetThumbFunc(SBarThumbFuncUPP);
  5810. c123,129
  5811. a                itsVertSBar.IScrollBar(self, self, VERTICAL, height - shrinkage, frame.right - SBARSIZE, frame.top);
  5812. a                itsVertSBar.SetActionProc(SBarActionProcUPP);
  5813. a                itsVertSBar.SetThumbFunc(SBarThumbFuncUPP);
  5814. c123,124
  5815. c135,139
  5816. a                itsSizeBox.ISizeBox(self, self);
  5817. c123,124
  5818. c143,150
  5819. a{*** A C C E S S I N G   M E T H O D S ***}
  5820. c143,143
  5821. c143,143
  5822. a{****************************************************************************}
  5823. c155,157
  5824. a{****************************************************************************}
  5825. c159,161
  5826. a        itsPanorama.SetScrollPane(self);
  5827. c163,166
  5828. a{****************************************************************************}
  5829. c168,172
  5830. a{****************************************************************************}
  5831. c174,175
  5832. a                                { Set instance variables            }
  5833. c177,180
  5834. a{****************************************************************************}
  5835. c182,185
  5836. a{****************************************************************************}
  5837. c187,188
  5838. a                                { Get instance variables            }
  5839. c190,193
  5840. a{****************************************************************************}
  5841. c195,200
  5842. a{****************************************************************************}
  5843. c202,203
  5844. a                                { Set instance variables            }
  5845. c205,208
  5846. a{****************************************************************************}
  5847. c210,213
  5848. a{****************************************************************************}
  5849. c180,180
  5850. c216,217
  5851. a                                { Start off with the frame            }
  5852. c219,219
  5853. a                                { add a 1-pixel border                }
  5854. c221,223
  5855. a                                { Subtract horizontal scroll bar    }
  5856. c225,227
  5857. a                                    { Subtract vertical scroll bar        }
  5858. c229,232
  5859. a{*** S C R O L L   B A R   M A I N T E N A N C E   M E T H O D S ***}
  5860. c193,193
  5861. a{****************************************************************************}
  5862. c236,239
  5863. a{****************************************************************************}
  5864. c241,248
  5865. a                                { Take a quick exit if no            }
  5866. a                                {   Panorama is installed            }
  5867. c251,259
  5868. a                                { Controls are limited to shorts    }
  5869. a                                { Need to scale in case extent is    }
  5870. a                                {   larger than a short            }
  5871. c215,215
  5872. c264,268
  5873. a                                { New maximum scroll bar setting    }
  5874. c223,223
  5875. c271,279
  5876. a{****************************************************************************}
  5877. c281,284
  5878. a{****************************************************************************}
  5879. c286,290
  5880. a                                { Take a quick exit if no            }
  5881. a                                {   Panorama is installed            }
  5882. c251,251
  5883. c294,303
  5884. a{****************************************************************************}
  5885. c305,307
  5886. a{****************************************************************************}
  5887. c263,263
  5888. c310,318
  5889. a{*** S C R O L L   P E R F O R M A N C E   M E T H O D S ***}
  5890. c279,279
  5891. c279,279
  5892. c279,279
  5893. c279,279
  5894. a{****************************************************************************}
  5895. c325,327
  5896. a{****************************************************************************}
  5897. aPROCEDURE CScrollPane.DoHorizScroll (whichPart: Integer); { Part of scroll bar clicked in    }
  5898. c287,287
  5899. a        delta: Longint;    { Number of pixels to scroll        }
  5900. a        minmax: Longint;    { Minimum or Maximum delta            }
  5901. a        ticks: Longint;    { Tick count at end of Delay        }
  5902. c334,336
  5903. a            kControlUpButtonPart: 
  5904. c338,338
  5905. a            kControlDownButtonPart: 
  5906. c340,340
  5907. a            kControlPageUpPart: 
  5908. c342,345
  5909. a            kControlPageDownPart: 
  5910. c342,343
  5911. c349,372
  5912. a{****************************************************************************}
  5913. c374,376
  5914. a{****************************************************************************}
  5915. aPROCEDURE CScrollPane.DoVertScroll (whichPart: Integer); { Part of scroll bar clicked in    }
  5916. c330,330
  5917. a        delta: Longint;    { Number of pixels to scroll        }
  5918. a        minmax: Longint;    { Minimum or Maximum delta            }
  5919. a        ticks: Longint;    { Tick count at end of Delay        }
  5920. c334,336
  5921. a            kControlUpButtonPart: 
  5922. c387,387
  5923. a            kControlDownButtonPart: 
  5924. c389,389
  5925. a            kControlPageUpPart: 
  5926. c342,343
  5927. c393,394
  5928. a            kControlPageDownPart: 
  5929. c342,343
  5930. c398,420
  5931. a{****************************************************************************}
  5932. c422,424
  5933. a{****************************************************************************}
  5934. c426,437
  5935. a    { Because of the scaling of control values when using long coordinates    }
  5936. a    { dragging the thumb to the beginning or end of the scroll bar will    }
  5937. a    { sometimes not fully scroll to the beginning or end. Catch this by    }
  5938. a    { checking if the current value is the max or min.                        }
  5939. c371,371
  5940. c401,401
  5941. c444,475
  5942. a{****************************************************************************}
  5943. c477,480
  5944. a{****************************************************************************}
  5945. c482,488
  5946. a{**************************************************}
  5947. c490,494
  5948. a{**************************************************}
  5949. c420,420
  5950. c497,504
  5951. a                theSBar := CScrollBar(GetControlReference(macControl));
  5952. c506,513
  5953. a{**************************************************}
  5954. c515,518
  5955. a{**************************************************}
  5956. c437,437
  5957. aPROCEDURE SBarThumbFunc (theSBar: ControlHandle;
  5958. c522,523
  5959. a        IF CScrollBar(theSBar).theOrientation = HORIZONTAL THEN
  5960. a            CScrollPane(CScrollBar(theSBar).itsSupervisor).DoThumbDrag(delta, 0)
  5961. c526,526
  5962. a            CScrollPane(CScrollBar(theSBar).itsSupervisor).DoThumbDrag(0, delta);
  5963. c474,475
  5964. c437,437
  5965. c531,531
  5966. e
  5967. fCSizeBox.p
  5968. x265469509,205503053
  5969. a{****************************************************************************}
  5970. c1,11
  5971. a{****************************************************************************}
  5972. c13,22
  5973. a{****************************************************************************}
  5974. c24,27
  5975. a{****************************************************************************}
  5976. c29,39
  5977. a{****************************************************************************}
  5978. c41,43
  5979. a{****************************************************************************}
  5980. c39,39
  5981. c46,54
  5982. a                { Use SICN Resource for active box    }
  5983. c56,67
  5984. a                { Inactive size box is blank        }
  5985. c69,76
  5986. a{****************************************************************************}
  5987. c78,80
  5988. a{****************************************************************************}
  5989. c76,76
  5990. c83,86
  5991. a                                        { If size box is not active ...    }
  5992. c88,89
  5993. a                                        { Set flag                            }
  5994. c91,91
  5995. a                                        { Make sure it's on screen            }
  5996. c93,95
  5997. a                                        { Force redraw so that an active    }
  5998. a                                        {   size box is displayed            }
  5999. c98,98
  6000. a                                        { Ensure that it's not drawn again    }
  6001. c100,106
  6002. a{****************************************************************************}
  6003. c108,110
  6004. a{****************************************************************************}
  6005. c100,100
  6006. c113,116
  6007. a                                        { If size box is active            }
  6008. c118,119
  6009. a                                        { Clear flag                        }
  6010. c121,121
  6011. a                                        { Make sure it's on screen            }
  6012. c123,125
  6013. a                                        { Force redraw so that an inactive    }
  6014. a                                        {   size box is displayed            }
  6015. c128,134
  6016. e
  6017. fCSwitchboard.p
  6018. x254643013,519842849
  6019. a{****************************************************************************}
  6020. c1,21
  6021. a{****************************************************************************}
  6022. c23,28
  6023. a    TCL, DiskInit;
  6024. c27,27
  6025. aFUNCTION AppleEventHandler (VAR event: AppleEvent;
  6026. a                            VAR reply: AppleEvent;
  6027. c33,33
  6028. aFUNCTION AppleEventIdleProc(VAR macEvent: EventRecord;
  6029. c35,39
  6030. a{* Class Constants *}
  6031. c37,37
  6032. c42,48
  6033. a{****************************************************************************}
  6034. c50,52
  6035. a{****************************************************************************}
  6036. c54,54
  6037. c47,47
  6038. aVAR
  6039. a    appleEventsHandlerUPP:    AEEventHandlerUPP;
  6040. c47,47
  6041. c55,58
  6042. a            { Install a single handler for all application AppleEvents}
  6043. c60,60
  6044. a                appleEventsHandlerUPP := NewAEEventHandlerProc(@AppleEventHandler);
  6045. a                FailOSErr(AEInstallEventHandler(typeWildCard, typeWildCard, appleEventsHandlerUPP, 0, FALSE));
  6046. c62,64
  6047. a{****************************************************************************}
  6048. c66,70
  6049. a{****************************************************************************}
  6050. aPROCEDURE CSwitchboard.DoMouseDown (VAR macEvent: EventRecord); { The mouse down event                }
  6051. c64,64
  6052. c74,74
  6053. a                    { Let Desktop handle it            }
  6054. c64,64
  6055. c77,79
  6056. a                    { Save for multi-click checking    }
  6057. c81,85
  6058. a{****************************************************************************}
  6059. c87,93
  6060. a{****************************************************************************}
  6061. aPROCEDURE CSwitchboard.DoMouseUp (VAR macEvent: EventRecord);{ The mouse up event                }
  6062. c96,97
  6063. a                    { Let target view handle it        }
  6064. c82,82
  6065. c100,101
  6066. a            { Save for multi-click checking    }
  6067. c84,84
  6068. c104,107
  6069. a{****************************************************************************}
  6070. c109,111
  6071. a{****************************************************************************}
  6072. aPROCEDURE CSwitchboard.DoKeyEvent (VAR macEvent: EventRecord); { The keyboard event    }
  6073. c114,114
  6074. a        theChar: Char;            { The associated character            }
  6075. a        keyCode: Byte;            { Code for the associated key        }
  6076. a        menuChoice: Longint;    { Menu equivalent key command        }
  6077. a        menuID: Integer;        { Check state of the command key    }
  6078. c119,131
  6079. a                                { Command key was down. Extract    }
  6080. a                                {   the character and check for a    }
  6081. a                                {   keyboard equivalent for a menu    }
  6082. a                                {   selection.                        }
  6083. c106,106
  6084. c137,139
  6085. a                                { Handle menu command or pass it    }
  6086. a                                { to the gopher if not a menu choice }
  6087. c122,122
  6088. c143,145
  6089. a                                            { Unhighlight the menu title        }
  6090. c147,148
  6091. a                            ELSE                            { pass non-menu commands key up the command chain }
  6092. c150,153
  6093. a                            KeyF1:        { perform Undo command }
  6094. c144,144
  6095. c156,162
  6096. a                            KeyF2:    { perform Cut command }
  6097. c144,144
  6098. c156,156
  6099. c166,171
  6100. a                            KeyF3:        { perform Copy command }
  6101. c144,144
  6102. c156,156
  6103. c175,180
  6104. a                            KeyF4:        { perform Paste command }
  6105. c144,144
  6106. c156,156
  6107. c184,189
  6108. a                            OTHERWISE             { A regular keystroke; let the     }
  6109. a                                    {   gopher handle it.              }
  6110. c192,196
  6111. a            keyUp:            { Key was released                    }
  6112. c198,199
  6113. a            autoKey:        { Key was held down                }
  6114. c201,205
  6115. a{****************************************************************************}
  6116. c207,209
  6117. a{****************************************************************************}
  6118. aPROCEDURE CSwitchboard.DoDiskEvent (VAR macEvent: EventRecord); { The disk event                    }
  6119. c212,212
  6120. a        corner: Point;     { Location for Dialog box            }
  6121. c214,217
  6122. a                        { Some sort of error occurred.        }
  6123. a                        {   Check if user wants to format    }
  6124. a                        {   the disk.                        }
  6125. c192,192
  6126. c222,223
  6127. a                        { ??? Can dialog box be centered    }
  6128. a                        {   There doesn't appear to be a    }
  6129. a                        {   DLOG resource for this one.    }
  6130. a                        {   Location (112,80) is the value    }
  6131. a                        {   used by Finder 6.1.             }
  6132. c192,192
  6133. c230,233
  6134. a{****************************************************************************}
  6135. c235,237
  6136. a{****************************************************************************}
  6137. aPROCEDURE CSwitchboard.DoUpdate (VAR macEvent: EventRecord); { The update event                    }
  6138. c212,212
  6139. c241,252
  6140. a{****************************************************************************}
  6141. c254,256
  6142. a{****************************************************************************}
  6143. aPROCEDURE CSwitchboard.DoActivate (VAR macEvent: EventRecord); { The activate event                }
  6144. c212,212
  6145. c241,246
  6146. c266,270
  6147. a{****************************************************************************}
  6148. c272,274
  6149. a{****************************************************************************}
  6150. aPROCEDURE CSwitchboard.DoDeactivate (VAR macEvent: EventRecord); { The deactivate event                }
  6151. c240,246
  6152. c284,287
  6153. a{****************************************************************************}
  6154. c289,292
  6155. a{****************************************************************************}
  6156. aPROCEDURE CSwitchboard.DoSuspend (VAR macEvent: EventRecord); { The suspend event                }
  6157. c243,243
  6158. c233,233
  6159. a                { Suspend the application            }
  6160. c233,233
  6161. c299,302
  6162. a{****************************************************************************}
  6163. c304,307
  6164. a{****************************************************************************}
  6165. aPROCEDURE CSwitchboard.DoResume (VAR macEvent: EventRecord);        { The resume event                    }
  6166. c243,243
  6167. a                { Resume the application            }
  6168. c242,242
  6169. c313,315
  6170. a{****************************************************************************}
  6171. c317,323
  6172. a{****************************************************************************}
  6173. aPROCEDURE CSwitchboard.DoOtherEvent (VAR macEvent: EventRecord);        { The other event                    }
  6174. c262,262
  6175. a    { NULL Method                        }
  6176. c268,269
  6177. a{****************************************************************************}
  6178. c331,335
  6179. a{****************************************************************************}
  6180. aPROCEDURE CSwitchboard.DoIdle (VAR macEvent: EventRecord); { Usually a null or system event    }
  6181. c262,262
  6182. c339,343
  6183. a{****************************************************************************}
  6184. c345,354
  6185. a{****************************************************************************}
  6186. c356,357
  6187. a        macEvent: EventRecord;     { Mac Event to be processed        }
  6188. a        isMyEvent: Boolean;        { Should program handle event?        }
  6189. a        mouseLoc: Point;        { Mouse location in global coords    }
  6190. c280,280
  6191. c279,279
  6192. a    { Make sure our cursor shape and mouse region are set properly    }
  6193. a    { before calling WaitNextEvent. We don't want to be stuck with    }
  6194. a    { the wrong cursor shape if a minor switch occurs (i.e., a        }
  6195. a    { background process get some cpu time). We also set the        }
  6196. a    { cursor shape before handling an event. This ensures that the    }
  6197. a    { the shape is correct even if the user performs some rapid    }
  6198. a    { mouse movement and clicking.                                    }
  6199. c287,287
  6200. c371,374
  6201. a                    { Get an event from the queue        }
  6202. c287,287
  6203. c377,380
  6204. a        ELSE            { No action required                }
  6205. c382,383
  6206. a{ We must respond to this event    }
  6207. c300,301
  6208. a{****************************************************************************}
  6209. c388,393
  6210. a{****************************************************************************}
  6211. c395,400
  6212. a                    { WaitNextEvent is the preferred    }
  6213. a                    {   call.  It handles multitasking    }
  6214. a                    {   in a friendly manner.            }
  6215. c312,312
  6216. c405,407
  6217. a        ELSE                { WaitNextEvent is not available.    }
  6218. c400,400
  6219. a                    {   We must use the old method of    }
  6220. a                    {   calling SystemTask and            }
  6221. a                    {   GetNextEvent.                    }
  6222. c312,312
  6223. c414,419
  6224. a{****************************************************************************}
  6225. c421,423
  6226. a{****************************************************************************}
  6227. aPROCEDURE CSwitchboard.DispatchEvent (VAR macEvent: EventRecord);
  6228. c326,326
  6229. c427,429
  6230. a                        { USER ACTIONS }
  6231. c329,329
  6232. c432,446
  6233. a                        { WINDOW MANAGER EVENTS }
  6234. c341,341
  6235. c449,461
  6236. a                        { MULTIFINDER EVENTS }
  6237. c362,362
  6238. a            osEvt: 
  6239. c465,495
  6240. a{****************************************************************************}
  6241. c497,505
  6242. a{****************************************************************************}
  6243. aPROCEDURE CSwitchboard.DoHighLevelEvent (VAR macEvent: EventRecord);
  6244. c396,396
  6245. c509,512
  6246. a        { +++ what to do with error? We return error codes in the}
  6247. a        { reply, but should the server app report an error?}
  6248. a        { client may either be this app, another app on this machine,}
  6249. a        { or an app on another machine.    }
  6250. c404,404
  6251. c518,521
  6252. a{****************************************************************************}
  6253. c523,533
  6254. a{****************************************************************************}
  6255. aFUNCTION CSwitchboard.DoAppleEvent (VAR theEvent: AppleEvent;
  6256. a                                VAR theReply: AppleEvent;
  6257. c537,559
  6258. a                    { Get the event class}
  6259. c442,442
  6260. c562,563
  6261. a                    { Get the event ID }
  6262. c445,445
  6263. c566,569
  6264. a            { When the CAppleEvent is initialized, it sets its errorCode to }
  6265. a            { errAEEventNotHandled. If no one handles the event, the error code}
  6266. a            { will not be modified, and we will correctly signal that the}
  6267. a            { event wasn't handled. If it was handled successfully, then}
  6268. a            { whoever handled it should have marked it as such by calling}
  6269. a            { appleEvent.SetErrorResult( noErr). If an error occurred in handling}
  6270. a            { it, then either someone should have called }
  6271. a            { appleEvent.SetErrorResult( theError), or an exception occurred and}
  6272. a            { we pick up the error in the HandleFailure above. }
  6273. c448,448
  6274. c580,586
  6275. a{****************************************************************************}
  6276. c588,601
  6277. a{****************************************************************************}
  6278. aFUNCTION CSwitchboard.AppleEventIdle (VAR macEvent: EventRecord;
  6279. c604,609
  6280. a                { make sure mouseRgn is up-to-date}
  6281. c478,478
  6282. c612,612
  6283. a                gDesktop.DispatchCursor(macEvent.where, self.mouseRgn);
  6284. c478,478
  6285. a                { When DoIdle returns, gSleepTime is up-to-date }
  6286. c480,480
  6287. c617,622
  6288. a        mouseRgn := self.mouseRgn;
  6289. c624,627
  6290. aFUNCTION AppleEventHandler (VAR event: AppleEvent;
  6291. a                            VAR reply: AppleEvent;
  6292. c537,537
  6293. c495,495
  6294. c510,510
  6295. c633,635
  6296. aFUNCTION AppleEventIdleProc (VAR macEvent: EventRecord;
  6297. a                             VAR sleepTime: Longint;
  6298. a                             VAR mouseRgn: RgnHandle): Boolean;
  6299. c517,517
  6300. c510,510
  6301. c641,644
  6302. e
  6303. fCTask.p
  6304. x503803608,201812852
  6305. a{**************************************************}
  6306. c1,8
  6307. a{**************************************************}
  6308. c10,20
  6309. a{**************************************************}
  6310. c22,25
  6311. a{**************************************************}
  6312. c27,33
  6313. a{**************************************************}
  6314. c35,38
  6315. a{**************************************************}
  6316. c40,46
  6317. a{**************************************************}
  6318. c48,51
  6319. a{**************************************************}
  6320. c45,45
  6321. c54,58
  6322. a{**************************************************}
  6323. c60,63
  6324. a{**************************************************}
  6325. c57,57
  6326. c66,70
  6327. a{**************************************************}
  6328. c72,77
  6329. a{**************************************************}
  6330. c69,69
  6331. c80,84
  6332. a{**************************************************}
  6333. c86,88
  6334. a{**************************************************}
  6335. c79,79
  6336. c91,97
  6337. e
  6338. fCTextEditTask.p
  6339. x284322898,308881020
  6340. a{****************************************************************************}
  6341. c1,17
  6342. a{****************************************************************************}
  6343. c19,28
  6344. a{****************************************************************************}
  6345. c30,40
  6346. a{****************************************************************************}
  6347. c42,92
  6348. a{****************************************************************************}
  6349. c94,98
  6350. a{****************************************************************************}
  6351. c100,111
  6352. a{****************************************************************************}
  6353. c113,118
  6354. a{****************************************************************************}
  6355. c120,121
  6356. a                                VAR macEvent: EventRecord);
  6357. c123,129
  6358. a        Assert(undone = FALSE);
  6359. c131,147
  6360. a{****************************************************************************}
  6361. c149,153
  6362. a{****************************************************************************}
  6363. c155,160
  6364. a{****************************************************************************}
  6365. c162,166
  6366. a{****************************************************************************}
  6367. c168,178
  6368. a    { One of the following cases must hold:                    }
  6369. a    {    - This is the first keystroke, and we have already        }
  6370. a    {       saved the selection, or the selection is empty. In    }
  6371. a    {       this case selStart == initialStart.                    }
  6372. a    {    - We are in the middle of typing, and the selection        }
  6373. a    {    is guaranteed to be empty. If selStart > initialStart }
  6374. a    {    then we are deleting new text and don't need to        }
  6375. a    {    save it. If selStart == deleted.start, we save the    }
  6376. a    {    character about to be deleted. selStart cannot be        }
  6377. a    {    less than initialStart because each backspace            }
  6378. a    {    decrements initialStart.                                }
  6379. c178,178
  6380. c191,192
  6381. a            { deleting new text    }
  6382. c178,178
  6383. c195,197
  6384. a            { must be first key and text is already saved,    }
  6385. a            { do nothing extra                                }
  6386. c195,196
  6387. c202,203
  6388. a            { deleting original text }
  6389. c178,178
  6390. c206,208
  6391. a            { was there a previous char?    }
  6392. c190,190
  6393. c211,213
  6394. a            { resize the saved text handle, and copy new char into place }
  6395. c190,190
  6396. c216,229
  6397. a{****************************************************************************}
  6398. c231,234
  6399. a{****************************************************************************}
  6400. c236,248
  6401. a    { One of the following cases must hold:                    }
  6402. a    {    - This is the first keystroke, and we have already        }
  6403. a    {       saved the selection, or the selection is empty. In    }
  6404. a    {       this case selStart == initialStart.                    }
  6405. a    {    - We are in the middle of typing, and the selection        }
  6406. a    {    is guaranteed to be empty. Forward delete                }
  6407. a    {      only deletes old text.                                }
  6408. c220,220
  6409. c257,258
  6410. a            { must be first key and text is already saved,    }
  6411. a            { just clear old text                            }
  6412. c220,220
  6413. c262,268
  6414. a            { was there a next char?    }
  6415. c229,229
  6416. c271,273
  6417. a            { resize the saved text handle, and copy new char into place }
  6418. c247,247
  6419. c276,292
  6420. a{****************************************************************************}
  6421. c294,298
  6422. a{****************************************************************************}
  6423. c300,309
  6424. a                    { deleted any inserted text                        }
  6425. c311,312
  6426. a                    { insert any deleted text, restore selection        }
  6427. c314,316
  6428. a                    { restore the clipboard                }
  6429. c318,320
  6430. a{****************************************************************************}
  6431. c322,325
  6432. a{****************************************************************************}
  6433. c327,335
  6434. a                                { re-delete the deleted text        }
  6435. c337,338
  6436. a                                { re-insert the inserted text        }
  6437. c340,347
  6438. a{****************************************************************************}
  6439. c349,354
  6440. a{****************************************************************************}
  6441. c356,366
  6442. a{****************************************************************************}
  6443. c368,371
  6444. a{****************************************************************************}
  6445. c373,377
  6446. a{****************************************************************************}
  6447. c379,381
  6448. a{****************************************************************************}
  6449. c383,388
  6450. a{****************************************************************************}
  6451. c390,392
  6452. a{****************************************************************************}
  6453. c394,401
  6454. a                IF itsTextPane.itsTypingTask = self THEN
  6455. c403,404
  6456. a                IF itsTextPane.itsLastTask = self THEN
  6457. c406,411
  6458. a{****************************************************************************}
  6459. c413,415
  6460. a{****************************************************************************}
  6461. c417,433
  6462. a{****************************************************************************}
  6463. c435,437
  6464. a{****************************************************************************}
  6465. c439,447
  6466. a{****************************************************************************}
  6467. c449,452
  6468. a{****************************************************************************}
  6469. c454,482
  6470. a{****************************************************************************}
  6471. c484,487
  6472. a{****************************************************************************}
  6473. c489,502
  6474. e
  6475. fCTextStyleTask.p
  6476. x136163665,86890147
  6477. a{****************************************************************************}
  6478. c1,20
  6479. a{****************************************************************************}
  6480. c22,31
  6481. a{****************************************************************************}
  6482. c33,35
  6483. a{****************************************************************************}
  6484. c37,46
  6485. a{****************************************************************************}
  6486. c48,51
  6487. a{****************************************************************************}
  6488. c53,57
  6489. a                IF itsTextPane.itsLastTask = self THEN
  6490. c59,64
  6491. a{****************************************************************************}
  6492. c66,69
  6493. a{****************************************************************************}
  6494. c71,153
  6495. a{****************************************************************************}
  6496. c155,159
  6497. a{****************************************************************************}
  6498. c161,167
  6499. a        swapStyle := oldStyle;    { save the current styling        }
  6500. c169,171
  6501. a        RestoreStyle;            { restore the previous styling }
  6502. a        oldStyle := newStyle;    { swap current and previous    }
  6503. c167,167
  6504. c175,176
  6505. a{****************************************************************************}
  6506. c178,183
  6507. a{****************************************************************************}
  6508. c185,194
  6509. a{****************************************************************************}
  6510. c196,199
  6511. a{****************************************************************************}
  6512. c201,228
  6513. e
  6514. fCView.p
  6515. x197447523,264669879
  6516. a{****************************************************************************}
  6517. c1,22
  6518. a{****************************************************************************}
  6519. c24,36
  6520. a{****************************************************************************}
  6521. c38,41
  6522. a{****************************************************************************}
  6523. aPROCEDURE CView.IView (anEnclosure: CView; { Enclosing display of this view    }
  6524. a                                aSupervisor: CBureaucrat);               { Supervisor in the command chain    }
  6525. c45,46
  6526. a        IBureaucrat(aSupervisor); { Initialize superclass            }
  6527. a                { Subclass should set the port        }
  6528. c49,49
  6529. a                { Store enclosing view                }
  6530. c51,52
  6531. a                { By default, views are invisible,    }
  6532. c54,54
  6533. a                {   inactive, and                    }
  6534. c56,56
  6535. a                {   don't handle mouse clicks        }
  6536. c58,58
  6537. a                {   and don't want to be gGopher   }
  6538. c60,61
  6539. a                { default ID is zero. It is up to    }
  6540. a                { the programmer to provide IDs    }
  6541. a                { and guarantee uniqueness.        }
  6542. c65,74
  6543. a{****************************************************************************}
  6544. c76,78
  6545. a{****************************************************************************}
  6546. aPROCEDURE CView.IViewRes (rType: ResType;    { Resource Type of template        }
  6547. a                                resID: Integer;                    { Resource ID of template            }
  6548. a                                anEnclosure: CView;                { Enclosing display of this view    }
  6549. a                                aSupervisor: CBureaucrat);            { Supervisor in the command chain    }
  6550. c84,84
  6551. a        hRes: Handle;            { Handle to resource template        }
  6552. c86,90
  6553. a        hRes := GetResource(rType, resID);    { Load resource into memory        }
  6554. c69,69
  6555. a        FailNILRes(hRes);        { Make sure resource exists        }
  6556. c69,69
  6557. a        HLock(hRes);            { Lock resource in heap            }
  6558. c70,70
  6559. a                            { Initialize View from template    }
  6560. c71,71
  6561. c99,99
  6562. a        HUnlock(hRes);            { Unlock resource                    }
  6563. c101,105
  6564. a{****************************************************************************}
  6565. c107,109
  6566. a{****************************************************************************}
  6567. aPROCEDURE CView.IViewTemp (anEnclosure: CView;    { Enclosing display of this view    }
  6568. a                                aSupervisor: CBureaucrat;                        { Supervisor in the command chain    }
  6569. a                                viewData: Ptr);                                { Template with View data            }
  6570. c84,84
  6571. c115,116
  6572. a            { Initialize superclass            }
  6573. c92,92
  6574. c119,130
  6575. a{****************************************************************************}
  6576. c132,134
  6577. a{****************************************************************************}
  6578. c136,137
  6579. a                                    { If this view has subviews ...    }
  6580. c139,140
  6581. a                                    {   Throw them out                    }
  6582. c142,144
  6583. a        IF (itsEnclosure <> NIL) THEN    { Remove ourself from enclosure    }
  6584. c140,140
  6585. a                itsEnclosure.RemoveSubview(self);
  6586. c144,144
  6587. a        IF (self = gLastViewHit) THEN    { Don't leave a dangling pointer    }
  6588. c140,140
  6589. c151,152
  6590. a        INHERITED Free;                    { Pass message on to superclass    }
  6591. c118,118
  6592. c118,118
  6593. c129,130
  6594. a{****************************************************************************}
  6595. c159,161
  6596. a{****************************************************************************}
  6597. c163,168
  6598. a{****************************************************************************}
  6599. c170,172
  6600. a{****************************************************************************}
  6601. c174,178
  6602. a        IF (gGopher = self) THEN
  6603. c180,183
  6604. a{****************************************************************************}
  6605. c185,187
  6606. a{****************************************************************************}
  6607. c154,154
  6608. a        {)
  6609. c191,191
  6610. a{         }
  6611. c193,194
  6612. a                { Make sure that View was active    }
  6613. a                {   and visible BEFORE its            }
  6614. a                {   enclosure was deactivate        }
  6615. a                { Clear flag in case the Activate    }
  6616. a                {   method checks it                }
  6617. c200,215
  6618. a{****************************************************************************}
  6619. c217,219
  6620. a{****************************************************************************}
  6621. a        {)
  6622. c222,222
  6623. a{         }
  6624. c224,227
  6625. a                { We must save, then restore the    }
  6626. a                {   active flag so we can put        }
  6627. a                {   things back the way they were    }
  6628. a                {   upon a subsequent Activate.    }
  6629. c232,247
  6630. a        IF (gGopher = self) THEN
  6631. c249,251
  6632. a{****************************************************************************}
  6633. c253,255
  6634. a{****************************************************************************}
  6635. c257,258
  6636. a        { Return instance variable            }
  6637. c206,206
  6638. a        IsVisible := self.visible;
  6639. c205,206
  6640. a{****************************************************************************}
  6641. c265,268
  6642. a{****************************************************************************}
  6643. c270,282
  6644. a{****************************************************************************}
  6645. c284,286
  6646. a{****************************************************************************}
  6647. c288,297
  6648. a{****************************************************************************}
  6649. c299,305
  6650. a{****************************************************************************}
  6651. aPROCEDURE CView.DispatchClick (VAR macEvent: EventRecord); { Mouse down event record            }
  6652. c241,241
  6653. a        hitView: CView;    { View in which mouse was clicked    }
  6654. a        hitPt: Point;        { In Frame coords of the view hit    }
  6655. c311,316
  6656. a                CountClicks(self, macEvent);
  6657. a                IF fCanBeGopher & (gGopher <> self) THEN
  6658. c319,320
  6659. a                { if old gopher refuses to resign, then}
  6660. a                { we can't process this click}
  6661. c323,330
  6662. a                        hOff := qd.thePort^.portRect.left;
  6663. a                        vOff := qd.thePort^.portRect.top;
  6664. c324,324
  6665. c334,343
  6666. a{****************************************************************************}
  6667. c345,367
  6668. a{****************************************************************************}
  6669. c369,372
  6670. a    { Null Method                        }
  6671. c295,295
  6672. c294,296
  6673. a{****************************************************************************}
  6674. c379,382
  6675. a{****************************************************************************}
  6676. aPROCEDURE CView.DoMouseUp (VAR macEvent: EventRecord); { Mouse up event record            }
  6677. c313,313
  6678. a        { Null Method                        }
  6679. c342,343
  6680. c343,343
  6681. a{****************************************************************************}
  6682. c391,395
  6683. a{****************************************************************************}
  6684. c343,343
  6685. c343,343
  6686. aPROCEDURE CView.DispatchCursor (where: Point;    { View containing the mouse        }
  6687. a                                mouseRgn: RgnHandle);                        { Region containing the mouse        }
  6688. c343,343
  6689. c308,308
  6690. c403,414
  6691. a            {)
  6692. c416,416
  6693. a{             }
  6694. c418,432
  6695. a                                    { See if mouse is within a subview    }
  6696. c343,343
  6697. c435,435
  6698. a        IF (hitView = NIL) THEN            { Mouse not within a subview        }
  6699. c339,339
  6700. a                { Calculate the uncovered area of    }
  6701. a                {   this View.                        }
  6702. a                { Start off with the aperture        }
  6703. a                {   in global coordinates            }
  6704. c343,343
  6705. c443,448
  6706. a            { Now take intersection with the visRgn of View's        }
  6707. a            { port. There could be something, such as a window,    }
  6708. a            { floating above the View. Unfortunately, the visRgn    }
  6709. a            { is the local coordinates and we need it to be in        }
  6710. a            { global coords. Rather than making a copy and            }
  6711. a            { offsetting to global coords, we temporily shift the    }
  6712. a            { View's port so that its local coords are the same as    }
  6713. a            { global coords. This saves us the overhead of making    }
  6714. a            { a copy of the visRgn, which may take up a lot of        }
  6715. a            { memory, at the expense of having to save and restore    }
  6716. a            { the port and origin.                                    }
  6717. c374,374
  6718. a                            { Save port and origin                }
  6719. c462,467
  6720. a                            { visRgn is in Global coords now    }
  6721. c469,470
  6722. a                            { Restore origin and port            }
  6723. c472,476
  6724. a        ELSE                    { Mouse is within a subview        }
  6725. c374,374
  6726. c479,480
  6727. a        { If balloons are on and no one has shown a balloon, then do it now}
  6728. a        { This could either be because the mouse is not in a subview or because}
  6729. a        { no subview did help. This allows a group of panes to share the same help}
  6730. a        { balloon by putting the help info in their enclosing view}
  6731. c374,374
  6732. c486,495
  6733. a{****************************************************************************}
  6734. c497,499
  6735. a{****************************************************************************}
  6736. aPROCEDURE CView.AdjustCursor (where: Point;    { Mouse location in Window coords    }
  6737. a                                mouseRgn: RgnHandle);                            { Region containing the mouse        }
  6738. c377,377
  6739. c385,385
  6740. a        SetCursor(qd.arrow);        { Use the standard arrow cursor    }
  6741. c388,388
  6742. c387,388
  6743. a{ Get the index of the 'hrct' resource to use for this view}
  6744. a{ helpResIndex is the index into the resource}
  6745. a{ the tip, alternate rect, and count parameters are not used}
  6746. a{****************************************************************************}
  6747. c513,518
  6748. a{****************************************************************************}
  6749. c520,541
  6750. a            { set mouse point to center of aperture }
  6751. c414,414
  6752. c544,555
  6753. a{****************************************************************************}
  6754. c557,580
  6755. a{****************************************************************************}
  6756. c582,592
  6757. a        cCurrHelpView := self;
  6758. a        IF (cLastHelpView <> self) & (helpData.hmmHelpType <> 0) THEN
  6759. c487,487
  6760. a                        { let this fail if there isn't enough memory}
  6761. c460,460
  6762. c598,610
  6763. a{****************************************************************************}
  6764. c612,617
  6765. a{****************************************************************************}
  6766. c619,620
  6767. a                                            { Return instance variable            }
  6768. c622,624
  6769. a{****************************************************************************}
  6770. c626,628
  6771. a{****************************************************************************}
  6772. c630,634
  6773. a{****************************************************************************}
  6774. c636,638
  6775. a{****************************************************************************}
  6776. c640,645
  6777. a{****************************************************************************}
  6778. c647,649
  6779. a{****************************************************************************}
  6780. c651,655
  6781. a{****************************************************************************}
  6782. c657,661
  6783. a{****************************************************************************}
  6784. c663,667
  6785. a{****************************************************************************}
  6786. c669,672
  6787. a{****************************************************************************}
  6788. c674,678
  6789. a{****************************************************************************}
  6790. c680,686
  6791. a{****************************************************************************}
  6792. c688,692
  6793. a{****************************************************************************}
  6794. c694,696
  6795. a{****************************************************************************}
  6796. c698,702
  6797. a{****************************************************************************}
  6798. c704,709
  6799. a{****************************************************************************}
  6800. c711,716
  6801. a                                { No subview list exists, make one    }
  6802. c718,724
  6803. a{****************************************************************************}
  6804. c726,728
  6805. a{****************************************************************************}
  6806. c730,735
  6807. a{****************************************************************************}
  6808. c737,740
  6809. a{****************************************************************************}
  6810. c742,745
  6811. a        {)
  6812. c747,747
  6813. a{         }
  6814. c749,759
  6815. a                                { If view has no subview ...        }
  6816. a                                {   No subview can be hit            }
  6817. c762,765
  6818. a                                { Search backwards thru subviews    }
  6819. c604,604
  6820. c768,770
  6821. a                                { No subview hit OR the subview    }
  6822. a                                {   hit does not process clicks    }
  6823. c773,775
  6824. a        { A willing view was hit            }
  6825. c610,610
  6826. c778,781
  6827. a{****************************************************************************}
  6828. c783,790
  6829. a{****************************************************************************}
  6830. c792,806
  6831. a                    { searching stops as soon as we find the first match }
  6832. c645,645
  6833. c809,815
  6834. a            { Don't care about return value, the view we want is returned in    }
  6835. a            { foundView or it is NIL                                            }
  6836. c645,645
  6837. a        ignore := View_FindMatch(self);
  6838. c820,823
  6839. a{****************************************************************************}
  6840. c825,827
  6841. a{****************************************************************************}
  6842. c829,839
  6843. a{****************************************************************************}
  6844. c841,844
  6845. a{****************************************************************************}
  6846. c846,847
  6847. a            { Null Method                        }
  6848. c677,678
  6849. a{****************************************************************************}
  6850. c852,862
  6851. a{****************************************************************************}
  6852. c864,869
  6853. a{****************************************************************************}
  6854. c871,876
  6855. a{****************************************************************************}
  6856. aPROCEDURE CView.SubpaneLocation (hEncl, vEncl: Longint;                     { Point in View's coordinates        }
  6857. a                                VAR hLocation, vLocation: Longint);        { Point in Window coordinates        }
  6858. c712,712
  6859. c881,882
  6860. a                                { Origin of the View                }
  6861. c702,702
  6862. c885,886
  6863. a                                { Convert point from View to        }
  6864. a                                {   Window coordinates                }
  6865. c702,702
  6866. c890,893
  6867. a{****************************************************************************}
  6868. c895,900
  6869. a{****************************************************************************}
  6870. c902,903
  6871. a        cPreparedView := self;
  6872. c723,724
  6873. c724,724
  6874. a{****************************************************************************}
  6875. c909,911
  6876. a{****************************************************************************}
  6877. c913,918
  6878. a{****************************************************************************}
  6879. c920,922
  6880. a{****************************************************************************}
  6881. c924,928
  6882. a{****************************************************************************}
  6883. c930,932
  6884. a{****************************************************************************}
  6885. c934,938
  6886. a{****************************************************************************}
  6887. c940,942
  6888. a{****************************************************************************}
  6889. c944,949
  6890. a{****************************************************************************}
  6891. c951,953
  6892. a{****************************************************************************}
  6893. c955,959
  6894. a{****************************************************************************}
  6895. c961,967
  6896. a{****************************************************************************}
  6897. c969,976
  6898. e
  6899. fCWindow.p
  6900. x332776131,258064901
  6901. a{****************************************************************************}
  6902. c1,23
  6903. a{****************************************************************************}
  6904. c25,32
  6905. a        { Format of a WIND resource        }
  6906. c34,59
  6907. a{*** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S ***}
  6908. c58,59
  6909. a{****************************************************************************}
  6910. c64,66
  6911. a{****************************************************************************}
  6912. aPROCEDURE CWindow.IWindow (WINDid: Integer;    { Window resource ID                }
  6913. a                                aFloating: Boolean;                        { Is this a floating window?        }
  6914. a                                anEnclosure: CDesktop;                        { Enclosing view of the window        }
  6915. a                                aSupervisor: CDirector);                    { Supervisor in chain of command    }
  6916. c72,72
  6917. a        theWIND: WINDtemplateH;                    { Handle to WIND resource template    }
  6918. a        saveVis: Integer;                            { Original setting of visible flag    }
  6919. c75,76
  6920. a                                                { Initialize superclass.            }
  6921. c78,81
  6922. a    { Because we maintain our own window list and have to do    }
  6923. a    { a lot of manual activating/deactivating to support        }
  6924. a    { floating windows, it is imperative that windows be        }
  6925. a    { invisible when initially created. Therefore, we read the    }
  6926. a    { the WIND resource template and set the visible flag to    }
  6927. a    { FALSE (after saving the original value).                    }
  6928. c75,75
  6929. c89,91
  6930. a                                { Set floating window flag            }
  6931. c93,93
  6932. a                                { Create Toolbox window record        }
  6933. c95,96
  6934. a                                { If the WIND template had the        }
  6935. a                                {   visible flag set to TRUE ...    }
  6936. c99,101
  6937. a                                { Get handle to the WIND template    }
  6938. a                                {   Call GetResource again since    }
  6939. a                                {   it could have been purged        }
  6940. c105,105
  6941. a                                { Reset flag to TRUE                }
  6942. c107,107
  6943. a                                { Select will show the window and    }
  6944. a                                {   make it the active one            }
  6945. c110,113
  6946. a{****************************************************************************}
  6947. c115,118
  6948. a{****************************************************************************}
  6949. c120,130
  6950. a        self.procID := aProcID;
  6951. c132,137
  6952. a{****************************************************************************}
  6953. c139,141
  6954. a{****************************************************************************}
  6955. c143,145
  6956. a                            { default resource ID for help balloon}
  6957. a                            { 'hrct' resource}
  6958. c148,149
  6959. a                            { Stuff handle to window object    }
  6960. a                            {   in reference constant field    }
  6961. a        SetWRefCon(macPort, Longint(self));
  6962. c153,154
  6963. a                            { Let window grow as big as the    }
  6964. a                            {   screen and as small as some    }
  6965. a                            {   minimum size (a constant)        }
  6966. c127,127
  6967. c159,159
  6968. a                            { Offset the sizeRect to normalize the rect to 0,0    }
  6969. a                            { Thanks to Bernie Bernstein for the fix            }
  6970. c162,165
  6971. a                            { set to "invalid" location        }
  6972. c167,168
  6973. a                            { Does not process activate click    }
  6974. c170,171
  6975. a                            { Does handle mouse clicks            }
  6976. c173,174
  6977. a                            { Stick window in our desktop        }
  6978. c137,137
  6979. a        CDesktop(itsEnclosure).AddWind(self);
  6980. c136,137
  6981. a{   Throw them out                    }
  6982. a{****************************************************************************}
  6983. c182,184
  6984. a{****************************************************************************}
  6985. c137,137
  6986. c187,190
  6987. a                        { Hide window first so the user    }
  6988. a                        {   doesn't see the ugly details    }
  6989. a                        {   as each subview is disposed    }
  6990. a                self.Hide;
  6991. c195,195
  6992. a                        { If this window has subviews ...    }
  6993. c197,201
  6994. a                        { Remove window from desktop        }
  6995. a        CDesktop(itsEnclosure).RemoveWind(self);
  6996. a                        { Clear dangling handle            }
  6997. c205,206
  6998. a                        { Kill the Toolbox window stuff    }
  6999. c208,212
  7000. a                        { Pass message on to superclass    }
  7001. c214,217
  7002. a{****************************************************************************}
  7003. c219,227
  7004. a{****************************************************************************}
  7005. aPROCEDURE CWindow.MakeMacWindow (WINDid: Integer); { Window resource ID                }
  7006. c230,236
  7007. a                                {   Floating windows are put in    }
  7008. a                                {   front of all others, regulars    }
  7009. a                                {   are put behind all others        }
  7010. c240,244
  7011. a                            { Create a new Mac window            }
  7012. c246,254
  7013. a{****************************************************************************}
  7014. c256,264
  7015. a{****************************************************************************}
  7016. c266,289
  7017. a{****************************************************************************}
  7018. c291,293
  7019. a{****************************************************************************}
  7020. c295,296
  7021. a        CDirector(itsSupervisor).CloseWind(self);
  7022. c253,254
  7023. a{*** A C C E S S I N G   M E T H O D S ***}
  7024. c236,236
  7025. a{****************************************************************************}
  7026. c303,306
  7027. a{****************************************************************************}
  7028. c308,309
  7029. a                            { Frame of Window includes a one    }
  7030. a                            {   pixel border around its port    }
  7031. a                            {   rectangle                        }
  7032. c313,318
  7033. a{****************************************************************************}
  7034. c320,322
  7035. a{****************************************************************************}
  7036. c324,325
  7037. a                                        { Window interior is the same        }
  7038. a                                        {   size as its port rectangle        }
  7039. c328,333
  7040. a{****************************************************************************}
  7041. c335,340
  7042. a{****************************************************************************}
  7043. c280,280
  7044. c343,350
  7045. a{****************************************************************************}
  7046. c352,354
  7047. a{****************************************************************************}
  7048. c356,357
  7049. a                            { Return instance variable            }
  7050. c359,361
  7051. a{****************************************************************************}
  7052. c363,365
  7053. a{****************************************************************************}
  7054. c367,368
  7055. a                            { Return instance variable            }
  7056. c370,372
  7057. a{****************************************************************************}
  7058. c374,376
  7059. a{****************************************************************************}
  7060. c378,379
  7061. a                            { Return instance variable            }
  7062. c381,383
  7063. a{****************************************************************************}
  7064. c385,388
  7065. a{****************************************************************************}
  7066. c390,394
  7067. a{****************************************************************************}
  7068. c396,398
  7069. a{****************************************************************************}
  7070. c400,401
  7071. a                { Toolbox call does the work        }
  7072. c403,405
  7073. a{****************************************************************************}
  7074. c407,409
  7075. a{****************************************************************************}
  7076. c411,412
  7077. a                        { Toolbox call does the work        }
  7078. c414,416
  7079. a{****************************************************************************}
  7080. c418,421
  7081. a{****************************************************************************}
  7082. c423,425
  7083. a                        { Set instance variable            }
  7084. c427,429
  7085. a{****************************************************************************}
  7086. c431,433
  7087. a{****************************************************************************}
  7088. c435,436
  7089. a                        { Return instance variable            }
  7090. c438,440
  7091. a{****************************************************************************}
  7092. c442,446
  7093. a{****************************************************************************}
  7094. c342,342
  7095. c449,454
  7096. a{****************************************************************************}
  7097. c456,463
  7098. a{****************************************************************************}
  7099. c361,361
  7100. c466,470
  7101. a                            { Set instance variable            }
  7102. c472,472
  7103. a                            { Check if window supports zooming    }
  7104. c474,476
  7105. a                            { Get standard state rectangle        }
  7106. c478,480
  7107. a                            { Adjust width                        }
  7108. c482,486
  7109. a                            { Adjust height                    }
  7110. c488,493
  7111. a{****************************************************************************}
  7112. c495,499
  7113. a{****************************************************************************}
  7114. c501,508
  7115. a{****************************************************************************}
  7116. c510,514
  7117. a{****************************************************************************}
  7118. c516,520
  7119. a{****************************************************************************}
  7120. c522,524
  7121. a{****************************************************************************}
  7122. c526,530
  7123. a{*** A P P E A R A N C E    M E T H O D S ***}
  7124. c416,416
  7125. a{****************************************************************************}
  7126. c534,536
  7127. a{****************************************************************************}
  7128. c416,416
  7129. c539,540
  7130. a                            { Do nothing if already visible    }
  7131. c542,543
  7132. a                            { Superclass sets status            }
  7133. c545,545
  7134. a                            { Tell desktop to make us visible    }
  7135. a                CDesktop(itsEnclosure).ShowWind(self);
  7136. c491,493
  7137. a{****************************************************************************}
  7138. c552,554
  7139. a{****************************************************************************}
  7140. c424,424
  7141. c557,558
  7142. a                            { Do nothing if already invisible    }
  7143. c560,561
  7144. a                            { Superclass sets status            }
  7145. c563,563
  7146. a                            { Tell desktop to hide us            }
  7147. a                CDesktop(itsEnclosure).HideWind(self);
  7148. c491,493
  7149. a{****************************************************************************}
  7150. c570,572
  7151. a{****************************************************************************}
  7152. c440,440
  7153. c575,576
  7154. a                            { Do nothing if already active        }
  7155. c578,579
  7156. a                            { Hilite window's title bar        }
  7157. c581,582
  7158. a                            { Let superclass set status        }
  7159. c584,585
  7160. a                            { Notify supervisor                }
  7161. a                CDirector(itsSupervisor).ActivateWind(self);
  7162. c491,493
  7163. a{****************************************************************************}
  7164. c592,594
  7165. a{****************************************************************************}
  7166. c450,450
  7167. c597,598
  7168. a                            { Do nothing if already inactive    }
  7169. c600,601
  7170. a                            { Unhilite title bar of window        }
  7171. c603,603
  7172. a                            { Notify supervisor                }
  7173. a                CDirector(itsSupervisor).DeactivateWind(self);
  7174. a                            { Let superclass set status        }
  7175. c607,611
  7176. a{****************************************************************************}
  7177. c613,615
  7178. a{****************************************************************************}
  7179. c617,618
  7180. a                            { Tell enclosure to select us        }
  7181. a        CDesktop(itsEnclosure).SelectWind(self);
  7182. c621,623
  7183. a{****************************************************************************}
  7184. c625,627
  7185. a{****************************************************************************}
  7186. c629,635
  7187. a                                        { Do nothing if already visible    }
  7188. c637,638
  7189. a                                        { Let superclass set status flags    }
  7190. c545,545
  7191. a                                        { Move window back to its original    }
  7192. a                                        {   location. The HideSuspend        }
  7193. a                                        {   method saved this location        }
  7194. a                                        {   before moving the window        }
  7195. a                                        {   offscreen.                        }
  7196. c646,650
  7197. a{****************************************************************************}
  7198. c652,657
  7199. a{****************************************************************************}
  7200. c659,660
  7201. a                                        { Do nothing if already invisible    }
  7202. c560,561
  7203. a                                        { Let superclass set status flags    }
  7204. c563,563
  7205. c666,667
  7206. a                                        { Save location of top left corner    }
  7207. a                                        {   of window in global coords        }
  7208. c670,675
  7209. a{****************************************************************************}
  7210. c677,681
  7211. a{****************************************************************************}
  7212. c520,520
  7213. c684,690
  7214. a{*** S I Z E   A N D   L O C A T I O N   M E T H O D S ***}
  7215. c520,520
  7216. a{ Mouse down event for drag        }
  7217. a{ Desktop does the dragging        }
  7218. a{****************************************************************************}
  7219. c696,698
  7220. a{****************************************************************************}
  7221. aPROCEDURE CWindow.Drag (VAR macEvent: EventRecord);
  7222. c530,530
  7223. c527,527
  7224. a        CDesktop(itsEnclosure).DragWind(self, macEvent);
  7225. c529,530
  7226. c530,530
  7227. c530,530
  7228. c530,530
  7229. a{****************************************************************************}
  7230. c710,712
  7231. a{****************************************************************************}
  7232. aPROCEDURE CWindow.Resize (VAR macEvent: EventRecord);
  7233. c630,630
  7234. c716,754
  7235. a{****************************************************************************}
  7236. c756,758
  7237. a{****************************************************************************}
  7238. c760,785
  7239. a            CDesktop(itsEnclosure).SelectWind(self);
  7240. c610,611
  7241. a{****************************************************************************}
  7242. c790,795
  7243. a{****************************************************************************}
  7244. c797,807
  7245. a{****************************************************************************}
  7246. c809,813
  7247. a{****************************************************************************}
  7248. c815,839
  7249. a{****************************************************************************}
  7250. c841,844
  7251. a{****************************************************************************}
  7252. c846,864
  7253. a{*** D R A W I N G    M E T H O D S ***}
  7254. c675,675
  7255. c675,675
  7256. c678,678
  7257. c678,678
  7258. a{****************************************************************************}
  7259. c871,873
  7260. a{****************************************************************************}
  7261. c875,876
  7262. a        savePort: GrafPtr;    { The current port                    }
  7263. a        updateRect: Rect;    { Bounding box of update region    }
  7264. c686,686
  7265. a        GetPort(savePort);        { Save the original port            }
  7266. c765,765
  7267. a                            { This restricts the visible area    }
  7268. a                            {   to just the update region,        }
  7269. a                            {   meaning that no drawing will    }
  7270. a                            {   occur outside this region        }
  7271. c886,886
  7272. a                            { Clip to the entire window        }
  7273. a        ClipRect(qd.thePort^.portRect);
  7274. a                            { Erase the update region            }
  7275. a        EraseRect(qd.thePort^.portRect);
  7276. c830,831
  7277. a                            { Draw all subviews                }
  7278. a                updateRect := qd.thePort^.visRgn^^.rgnBBox;
  7279. c895,896
  7280. a        EndUpdate(macPort);        { End the update process            }
  7281. a        SetPort(savePort);        { Restore the original port        }
  7282. c690,690
  7283. c836,836
  7284. c692,692
  7285. c704,705
  7286. a{****************************************************************************}
  7287. c905,907
  7288. a{****************************************************************************}
  7289. c701,701
  7290. c910,916
  7291. a{*** M O U S E   M E T H O D S ***}
  7292. c706,708
  7293. a{****************************************************************************}
  7294. c922,927
  7295. a{****************************************************************************}
  7296. c719,719
  7297. aPROCEDURE CWindow.DispatchClick (VAR macEvent: EventRecord); { Mouse down event record            }
  7298. c720,720
  7299. a        Prepare;            { Use Window's port and coords        }
  7300. a                        { Convert mouse location in event    }
  7301. a                        {   record to window coords        }
  7302. c935,935
  7303. a                        { Let superclass process the event    }
  7304. c937,941
  7305. a{****************************************************************************}
  7306. c943,947
  7307. a{****************************************************************************}
  7308. c730,730
  7309. aPROCEDURE CWindow.DispatchCursor (where: Point;    { Mouse location in global coords    }
  7310. a                                mouseRgn: RgnHandle);    { Region containing the mouse        }
  7311. c761,761
  7312. c953,954
  7313. a                            { Convert point to Window coords    }
  7314. c735,735
  7315. c957,960
  7316. a                            { Let superclass take over            }
  7317. c962,964
  7318. a{****************************************************************************}
  7319. c966,968
  7320. a{****************************************************************************}
  7321. c747,747
  7322. c971,980
  7323. a{ Functions passed as arguments to CList methods }
  7324. c754,754
  7325. c763,763
  7326. a{**************************************************}
  7327. c985,988
  7328. a{**************************************************}
  7329. c763,763
  7330. c991,997
  7331. a{**************************************************}
  7332. c999,1002
  7333. a{**************************************************}
  7334. c773,773
  7335. c1005,1011
  7336. a{**************************************************}
  7337. c1013,1016
  7338. a{**************************************************}
  7339. c784,784
  7340. c1019,1025
  7341. a{**************************************************}
  7342. c1027,1030
  7343. a{**************************************************}
  7344. c804,804
  7345. c1033,1039
  7346. a{**************************************************}
  7347. c1041,1044
  7348. a{**************************************************}
  7349. c818,818
  7350. c1047,1053
  7351. a{**************************************************}
  7352. c1055,1058
  7353. a{**************************************************}
  7354. c839,839
  7355. c1061,1067
  7356. e
  7357. fExceptions.p
  7358. x213215847,306224579
  7359. c0,18
  7360. aUSES Types, Memory, Errors, Resources, Processes;
  7361. c19,34
  7362. a            A6Link:         Longint;
  7363. a            handlerType:    SignedByte;
  7364. a            fPropagate:        Boolean;
  7365. a            pad:            integer;
  7366. a            handlerProc:     ProcPtr;
  7367. a            next:             FailInfoPtr;
  7368. a{$IFC MAC68K}
  7369. a            regs:             ARRAY[1..13] OF Longint;
  7370. a{$ELSEC}
  7371. a            regs:             ARRAY[1..60] OF Longint;
  7372. c184,184
  7373. c41,69
  7374. c76,76
  7375. c68,69
  7376. c71,72
  7377. aUSES TCL;
  7378. c70,70
  7379. c73,75
  7380. c79,208
  7381. a{$PUSH}
  7382. a{$Z+}
  7383. aPROCEDURE MyFailure ( e : INTEGER; m : LONGINT;
  7384. a                        PROCEDURE Handler(e : INTEGER; m : LONGINT));
  7385. aBEGIN
  7386. a    Handler(e,m);
  7387. aEND;
  7388. a{$POP}
  7389. c206,206
  7390. c209,321
  7391. c13,13
  7392. c322,322
  7393. e
  7394. o
  7395. rDialog classes
  7396. fCDialog.p
  7397. x249562772,471054042
  7398. a{****************************************************************************}
  7399. c1,18
  7400. a{****************************************************************************}
  7401. c20,30
  7402. a    kScrollSteps = 10;        { default step value used when creating    }
  7403. a                            { a scrollpane for the dialog                }
  7404. c29,29
  7405. c33,33
  7406. a{****************************************************************************}
  7407. c36,39
  7408. a{****************************************************************************}
  7409. c41,49
  7410. a{****************************************************************************}
  7411. c51,54
  7412. a{****************************************************************************}
  7413. c56,67
  7414. a{****************************************************************************}
  7415. c69,71
  7416. a{****************************************************************************}
  7417. c73,79
  7418. a{****************************************************************************}
  7419. c81,83
  7420. a{****************************************************************************}
  7421. c85,92
  7422. a        { only enable autscrolling if both scroll bars are present }
  7423. c82,82
  7424. c95,97
  7425. a        enclosure := self;
  7426. c99,101
  7427. a                scrollPane.IScrollPane(self, self, 0, 0, 0, 0, sizELASTIC, sizELASTIC, fHasHScroll, fHasVScroll, fHasSizeBox);
  7428. c103,109
  7429. a        itsPanorama.IPanorama(enclosure, self, 0, 0, 0, 0, sizELASTIC, sizELASTIC);
  7430. c111,121
  7431. a{****************************************************************************}
  7432. c123,128
  7433. a{****************************************************************************}
  7434. c130,131
  7435. a                            VAR macEvent: EventRecord);
  7436. c133,155
  7437. a{****************************************************************************}
  7438. c157,162
  7439. a{****************************************************************************}
  7440. c164,194
  7441. a                        IF (gopherInfo^.firstGopher = NIL) THEN    { firstGopher is nil only before }
  7442. a                                                    { we hit the first gopher }
  7443. c177,177
  7444. c198,198
  7445. a                                                    { always update last gopher because }
  7446. a                                                    { we can't tell which is last until }
  7447. a                                                    { we're done                         }
  7448. c202,203
  7449. a                        IF gopherInfo^.hitCurrent & (gopherInfo^.nextGopher = NIL) THEN             { after we hit the current gopher, }
  7450. a    { the first one we find is the next }
  7451. a                                                    { gopher.                          }
  7452. c180,180
  7453. c208,209
  7454. a                                                        { flag when we hit the current    }
  7455. a                                                        { gopher so we can watch for the    }
  7456. a                                                        { next one.                        }
  7457. c213,215
  7458. a                        IF (NOT gopherInfo^.hitCurrent) THEN        { keep updating the prev gopher    }
  7459. a                            gopherInfo^.prevGopher := aView;        { until we hit the current gopher }
  7460. c185,185
  7461. c219,219
  7462. a                                                    { recursively search subviews         }
  7463. c221,225
  7464. a{****************************************************************************}
  7465. c227,235
  7466. a{****************************************************************************}
  7467. c237,248
  7468. a                                            { if no next gopher, wrap around to first }
  7469. c250,251
  7470. a                                            { if no prev gopher, wrap around to last }
  7471. c253,259
  7472. a{****************************************************************************}
  7473. c261,265
  7474. a{****************************************************************************}
  7475. c267,283
  7476. a{****************************************************************************}
  7477. c285,288
  7478. a{****************************************************************************}
  7479. c290,296
  7480. a{****************************************************************************}
  7481. c298,302
  7482. a{****************************************************************************}
  7483. c304,313
  7484. a                { returns TRUE if aPane is a CDialogText and it failed validation }
  7485. c271,271
  7486. c316,338
  7487. a{****************************************************************************}
  7488. c340,343
  7489. a{****************************************************************************}
  7490. c345,355
  7491. a{****************************************************************************}
  7492. c357,361
  7493. a{****************************************************************************}
  7494. c363,375
  7495. a{****************************************************************************}
  7496. c377,380
  7497. a{****************************************************************************}
  7498. c382,396
  7499. a{****************************************************************************}
  7500. c398,401
  7501. a{****************************************************************************}
  7502. c403,415
  7503. a    { get the pane's frame and convert it to the coordinates        }
  7504. a    { of the dialog panorama, which does the scrolling                }
  7505. c364,364
  7506. c419,425
  7507. a        itsPanorama.GetPosition(position);    { get the current scroll position    }
  7508. c427,428
  7509. a    { grow the frame rectangle a little so we always have a little    }
  7510. a    { whitespace around the pane                                    }
  7511. c375,375
  7512. c432,433
  7513. a            {*** calc vertical scroll ***}
  7514. c375,375
  7515. a    { Is the top of the pane below the bottom of the frame?        }
  7516. c396,396
  7517. c438,443
  7518. a    { Is the bottom of the pane above the top of the frame?        }
  7519. c396,396
  7520. c446,450
  7521. a    {*** calc horizontal scroll ***}
  7522. c396,396
  7523. a    { Is the left edge of the pane past the right edge of frame?    }
  7524. c396,396
  7525. c455,460
  7526. a    { Is the right edge of the pane before the left edge of frame? }
  7527. c415,415
  7528. c463,467
  7529. a    { scroll to new position of necessary                            }
  7530. c415,415
  7531. c470,474
  7532. a{****************************************************************************}
  7533. c476,481
  7534. a{****************************************************************************}
  7535. c415,415
  7536. c484,496
  7537. e
  7538. fCDialogDirector.p
  7539. x101605399,528952795
  7540. a{****************************************************************************}
  7541. c1,12
  7542. a{****************************************************************************}
  7543. c14,23
  7544. a{****************************************************************************}
  7545. c25,28
  7546. a{****************************************************************************}
  7547. c30,36
  7548. a{****************************************************************************}
  7549. c38,42
  7550. a{****************************************************************************}
  7551. c44,57
  7552. a{****************************************************************************}
  7553. c59,62
  7554. a{****************************************************************************}
  7555. c64,66
  7556. a        Assert(member(itsWindow, CDialog));
  7557. c66,66
  7558. c69,72
  7559. a{****************************************************************************}
  7560. c74,80
  7561. a{****************************************************************************}
  7562. c82,99
  7563. a            { Setup the desired default command, and make sure the window     }
  7564. a            { is modal and visible                                         }
  7565. c96,96
  7566. c103,107
  7567. a        { Since we just disabled the gopher's menus out from under it,}
  7568. a        { we need to trick it into becoming the gopher again.}
  7569. c96,96
  7570. c111,111
  7571. a        ignore := self.BecomeGopher(TRUE);
  7572. c113,114
  7573. a        { post an exception handler to prevent exceptions from }
  7574. a        { prematurely aborting the dialog                        }
  7575. c99,99
  7576. c118,130
  7577. a{****************************************************************************}
  7578. c132,135
  7579. a{****************************************************************************}
  7580. c137,142
  7581. a{****************************************************************************}
  7582. c144,147
  7583. a{****************************************************************************}
  7584. c149,154
  7585. a{****************************************************************************}
  7586. c156,160
  7587. a{****************************************************************************}
  7588. c162,183
  7589. a{****************************************************************************}
  7590. c185,188
  7591. a{****************************************************************************}
  7592. c190,207
  7593. a{****************************************************************************}
  7594. c209,213
  7595. a{****************************************************************************}
  7596. c215,227
  7597. e
  7598. fCDialogText.p
  7599. x335290214,156303652
  7600. a{****************************************************************************}
  7601. c1,11
  7602. a{****************************************************************************}
  7603. c13,24
  7604. a    kBorderAmount = 2;    { white space between border and text of edit field }
  7605. c24,24
  7606. a{****************************************************************************}
  7607. c28,33
  7608. a{****************************************************************************}
  7609. c35,50
  7610. a{****************************************************************************}
  7611. c52,54
  7612. a{****************************************************************************}
  7613. c56,72
  7614. a{****************************************************************************}
  7615. c74,76
  7616. a{****************************************************************************}
  7617. c78,83
  7618. a{****************************************************************************}
  7619. c85,88
  7620. a{****************************************************************************}
  7621. c90,102
  7622. a{****************************************************************************}
  7623. c104,108
  7624. a{****************************************************************************}
  7625. c110,117
  7626. a{****************************************************************************}
  7627. c119,123
  7628. a{****************************************************************************}
  7629. c125,126
  7630. a                                VAR macEvent: EventRecord);
  7631. c128,146
  7632. a                        theID := self.ID;
  7633. c148,155
  7634. a{****************************************************************************}
  7635. c157,160
  7636. a{****************************************************************************}
  7637. c162,174
  7638. a{****************************************************************************}
  7639. c176,182
  7640. a{****************************************************************************}
  7641. c184,193
  7642. a        IF (isRequired & (textLength = 0)) THEN
  7643. c195,209
  7644. a{****************************************************************************}
  7645. c211,213
  7646. a{****************************************************************************}
  7647. c215,228
  7648. a{****************************************************************************}
  7649. c230,233
  7650. a{****************************************************************************}
  7651. c235,244
  7652. a         { if we are resigning the gopher and validation is requested    }
  7653. a         { then do the validation before calling inherited method        }
  7654. a         { note that we don't validate if window is not visible        }
  7655. c226,226
  7656. c249,272
  7657. e
  7658. fCDLOGDialog.p
  7659. x292465399,391680627
  7660. a{****************************************************************************}
  7661. c1,11
  7662. a{****************************************************************************}
  7663. c13,23
  7664. a    {MethTableUtils;} TextUtils;
  7665. c22,22
  7666. c26,27
  7667. a    { constants for control types in dialog template }
  7668. c25,25
  7669. c30,57
  7670. a{$IFC MAC68K}
  7671. c58,61
  7672. a{$ELSEC}
  7673. aBEGIN
  7674. a    ByteAsUnsigned := band(sb,$00FF);
  7675. aEND;
  7676. a{$ENDC}
  7677. c62,62
  7678. a{****************************************************************************}
  7679. c65,67
  7680. a{****************************************************************************}
  7681. c62,62
  7682. c70,78
  7683. a        staticTextFont := 0;        { use the system font                }
  7684. c80,80
  7685. a        staticTextSize := 0;        { use TE's default size            }
  7686. c82,82
  7687. a        defaultBorderPen := 1;        { default to border of 1 pixel     }
  7688. c84,84
  7689. a            { Get the DLOG resource template                        }
  7690. c84,84
  7691. c87,89
  7692. a            { Get window size from the template                    }
  7693. c91,93
  7694. a        { If the procID is documentProc or zoomDocProc then give the window    }
  7695. a        { horizontal and vertical scroll bars and a size box.                    }
  7696. c96,103
  7697. a        { Get the window title from the template                    }
  7698. c105,107
  7699. a            { Get the DITL resource and create all the dialog items    }
  7700. c93,93
  7701. c110,113
  7702. a{****************************************************************************}
  7703. c115,120
  7704. a{****************************************************************************}
  7705. c122,150
  7706. a        { Get the DITL item list                            }
  7707. c138,138
  7708. c153,158
  7709. a        { index of last item in list }
  7710. c145,145
  7711. c161,162
  7712. a        { point to the first DITL item }
  7713. c145,145
  7714. c165,166
  7715. a        { iterate over all the items in the DITL resource        }
  7716. a        { and create the TCL panes on the fly                    }
  7717. c147,147
  7718. c170,172
  7719. a                 { Is this item disabled?                                }
  7720. c150,150
  7721. c175,176
  7722. a                { Get size of the item, and the pad it for word        }
  7723. a                { alignment if necessary                                }
  7724. c158,158
  7725. c180,183
  7726. a                { Find the "best fit" enclosure for the new item        }
  7727. c158,158
  7728. c186,187
  7729. a                { Get the dimensions for the new item                    }
  7730. c162,162
  7731. c190,192
  7732. a                { If the enclosure for the new item is not the dialog     }
  7733. a                { itself, then we should transform the top left to the }
  7734. a                { enclosure's coordinates.    Note that the item rect in     }
  7735. a                { ditlItem is passed unmodified to    the item creation     }
  7736. a                { methods.                                                }
  7737. c166,166
  7738. c166,166
  7739. c200,201
  7740. a                { Case on the item type. We must strip off the         }
  7741. a                { enable bit to do so.                                    }
  7742. c169,169
  7743. c172,172
  7744. c206,206
  7745. a                    userItem:    { User Items        }
  7746. c208,208
  7747. a                    kBtnCtrl:    { Push Buttons        }
  7748. c210,210
  7749. a                    kChkCtrl:    { Check boxes        }
  7750. c212,212
  7751. a                    kRadCtrl:    { Radio Buttons    }
  7752. c214,214
  7753. a                    kResCtrl:    { 'CNTL' Resource Controls }
  7754. c216,216
  7755. a                    statText:    { Static text        }
  7756. c218,218
  7757. a                    editText:    { Edit text        }
  7758. c220,220
  7759. a                    iconItem:    { Icons            }
  7760. c222,222
  7761. a                    picItem:    { Pictures            }
  7762. c224,229
  7763. a                        { Set the view ID of the new dialog item to its index in the DITL + }
  7764. a                        { the base ID supplied by the caller.                              }
  7765. c232,244
  7766. a{****************************************************************************}
  7767. c246,252
  7768. a{****************************************************************************}
  7769. c254,263
  7770. a        { first check if the current view encloses the rect }
  7771. a        { if it does, then check if any subview encloses it }
  7772. c235,235
  7773. c267,271
  7774. a            { save the most specific view that encloses the rect,    }
  7775. a            { either a subview of this view, or this view            }
  7776. c235,235
  7777. c275,294
  7778. a    { If anyView is not nil, then some subview encloses    }
  7779. a    { the rect. However, there may be a view nested within }
  7780. a    { anyView that completely encloses the rect.             }
  7781. a    { foundView returns the best view                        }
  7782. c243,243
  7783. c300,301
  7784. a    { if no subview was found that completely encloses boundsRect      }
  7785. a    { then the enclosure defaults to the dialog panorama             }
  7786. c257,257
  7787. c305,310
  7788. a{ make a copy of the button title }
  7789. a{ ask the bartender to parse this string for us. }
  7790. a{****************************************************************************}
  7791. c314,316
  7792. a{****************************************************************************}
  7793. c318,333
  7794. a        btn.INewButton(aWidth, aHeight, hEncl, vEncl, titleStr, TRUE, pushButProc, enclosure, self);
  7795. c335,339
  7796. a{****************************************************************************}
  7797. c341,343
  7798. a{****************************************************************************}
  7799. c345,355
  7800. a        Assert(member(enclosure, CRadioGroupPane));
  7801. c357,364
  7802. a{****************************************************************************}
  7803. c366,368
  7804. a{****************************************************************************}
  7805. c370,382
  7806. a        check.INewCheckBox(aWidth, aHeight, hEncl, vEncl, titleStr, TRUE, enclosure, self);
  7807. c384,387
  7808. a{****************************************************************************}
  7809. c389,391
  7810. a{****************************************************************************}
  7811. c393,403
  7812. a{ first check for overloading of static text items        }
  7813. a{ overloading is signalled by a first character of '@' }
  7814. a{****************************************************************************}
  7815. c407,413
  7816. a{****************************************************************************}
  7817. c415,438
  7818. a                text.IEditText(enclosure, self, aWidth, aHeight, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY, -1);
  7819. c440,452
  7820. a{****************************************************************************}
  7821. c454,458
  7822. a{*****************************************************************************}
  7823. c460,473
  7824. a        text.IDialogText(enclosure, self, aWidth, aHeight, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY, -1);
  7825. c475,486
  7826. a{****************************************************************************}
  7827. c488,490
  7828. a{****************************************************************************}
  7829. c492,501
  7830. a        icon.IIconPane(enclosure, self, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY, ditlItem^.itemData[0], TRUE);
  7831. c503,505
  7832. a{****************************************************************************}
  7833. c507,509
  7834. a{****************************************************************************}
  7835. c511,520
  7836. a        pict.IPicture(enclosure, self, aWidth, aHeight, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY);
  7837. a    { pass resource ID of PICT }
  7838. c523,526
  7839. a{****************************************************************************}
  7840. c528,531
  7841. a{****************************************************************************}
  7842. c533,545
  7843. a        pane.IPane(enclosure, self, aWidth, aHeight, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY);
  7844. c547,554
  7845. a{****************************************************************************}
  7846. c556,587
  7847. a{****************************************************************************}
  7848. aFUNCTION NewByName(s:string):Handle; EXTERNAL;
  7849. c505,505
  7850. a FUNCTION CDLOGDialog.AddOverloadedItem (itemText: Str255;
  7851. c590,624
  7852. a        { collect the class name, resource type and ID}
  7853. c544,544
  7854. c627,645
  7855. a        { get the resource, save the location and size, then}
  7856. a        { restore it after the pane is created.}
  7857. c554,554
  7858. c649,659
  7859. a        { now make the pane}
  7860. c596,596
  7861. c662,666
  7862. a                Assert(member(newPane, CPane));
  7863. c596,596
  7864. a                newPane.IViewRes(rType, resID, enclosure, self);
  7865. c670,673
  7866. a        ELSE IF (itemText[1] = '#') THEN        { Create a CIntegerText}
  7867. c623,623
  7868. c676,676
  7869. a                text.IIntegerText(enclosure, self, aWidth, aHeight, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY, -1);
  7870. c678,687
  7871. a        { check if string not exhausted and have another '#' }
  7872. c596,596
  7873. c690,691
  7874. a                        index := index + 1;        { move past delimiter}
  7875. c693,701
  7876. a        ELSE IF (itemText[1] = '!') THEN        { Create a CDialogText with constraints}
  7877. c623,624
  7878. c705,709
  7879. a                dlgText.IDialogText(enclosure, self, aWidth, aHeight, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY, -1);
  7880. c711,714
  7881. a        { if next char is another '!', make this a required field}
  7882. c716,720
  7883. a        { next text, if any, is max number of chars, no}
  7884. a        { trailing delimiter is required, just collect until end of string}
  7885. c618,618
  7886. c724,732
  7887. a                group.IRadioGroupPane(enclosure, self, aWidth, aHeight, hEncl, vEncl, sizFIXEDSTICKY, sizFIXEDSTICKY);
  7888. c631,631
  7889. c735,766
  7890. e
  7891. fCDLOGDirector.p
  7892. x403282096,630890
  7893. a{****************************************************************************}
  7894. c1,15
  7895. a{****************************************************************************}
  7896. c17,26
  7897. a{****************************************************************************}
  7898. c28,31
  7899. a{****************************************************************************}
  7900. c33,42
  7901. a        dialog.IDLOGDialog(DLOGid, gDesktop, self);
  7902. c44,47
  7903. e
  7904. fCIntegerText.p
  7905. x298969365,532904079
  7906. a{****************************************************************************}
  7907. c1,30
  7908. a{****************************************************************************}
  7909. c32,41
  7910. a{****************************************************************************}
  7911. c46,50
  7912. a{****************************************************************************}
  7913. c52,65
  7914. a{****************************************************************************}
  7915. c67,69
  7916. a{****************************************************************************}
  7917. c65,65
  7918. c72,84
  7919. a    { As a special case, we interpret that                         }
  7920. a    { if minValue == maxValue, the intent is to allow all integers    }
  7921. c79,79
  7922. c88,98
  7923. a{****************************************************************************}
  7924. c100,103
  7925. a{****************************************************************************}
  7926. c105,106
  7927. a        Assert(aMaximum > aMinimum);
  7928. c108,110
  7929. a    { if range is MINLONG, MAXLONG then any integral entry is}
  7930. a    { allowed, so don't display the acceptable range in the error alert}
  7931. c98,98
  7932. c114,116
  7933. a{****************************************************************************}
  7934. c118,121
  7935. a{****************************************************************************}
  7936. c123,128
  7937. a{****************************************************************************}
  7938. c130,132
  7939. a{****************************************************************************}
  7940. c134,135
  7941. a        numStr, oldText: Str255;
  7942. c116,116
  7943. c124,124
  7944. c143,143
  7945. c128,128
  7946. a        NumToString(aValue, numStr);
  7947. c128,128
  7948. c151,155
  7949. a{****************************************************************************}
  7950. c157,159
  7951. a{****************************************************************************}
  7952. c161,169
  7953. a{****************************************************************************}
  7954. c171,174
  7955. a{****************************************************************************}
  7956. c176,207
  7957. a{****************************************************************************}
  7958. c209,212
  7959. a{****************************************************************************}
  7960. c214,217
  7961. c219,219
  7962. c207,207
  7963. c225,234
  7964. a                valid := TRUE;
  7965. a                StringToNum(str, intValue);
  7966. c204,204
  7967. c206,207
  7968. c256,256
  7969. e
  7970. fTCL_Dialogs.p
  7971. x201322237,518036801
  7972. c0,0
  7973. a{****************************************************************************}
  7974. c2,9
  7975. a{****************************************************************************}
  7976. c11,20
  7977. a    kDialogPanoramaID = 'pano';        { view ID of dialog panorama}
  7978. a    kDialogScrollPaneID = 'scpn';    { view ID of dialog scroll pane, if any}
  7979. c20,20
  7980. c24,37
  7981. a            defaultBtn: CButton;            { current default button }
  7982. a            itsPanorama: CPanorama;        { panorama that encloses all dialog items }
  7983. a            scrollable: Boolean;            { TRUE if autoscrolling is enabled. This }
  7984. a                                        { is the case when itsPanorama is enclosed }
  7985. a                                        { in a scroll pane. }
  7986. c34,34
  7987. c44,58
  7988. a                                        VAR macEvent: EventRecord);
  7989. c60,79
  7990. a{****************************************************************************}
  7991. c81,82
  7992. a{****************************************************************************}
  7993. c78,78
  7994. c85,87
  7995. a            dismissCmd: Longint;    { command that dismissed the dialog }
  7996. c78,78
  7997. c90,104
  7998. a{****************************************************************************}
  7999. c106,107
  8000. a{****************************************************************************}
  8001. c103,104
  8002. c111,113
  8003. a            isRequired: Boolean;            { TRUE if must be non-empty to be valid    }
  8004. c115,115
  8005. a            maxValidLength: Longint;        { maximum number of chars for validation    }
  8006. c103,103
  8007. c118,134
  8008. a                                        VAR macEvent: EventRecord);
  8009. c130,130
  8010. c137,145
  8011. a    { View Template for DialogText }
  8012. c145,145
  8013. c148,157
  8014. a{ indices into STR# 133 for validation constrain errors    }
  8015. c145,145
  8016. a    validateFieldIsRequired = 1;    { required field was left blank    }
  8017. a    validateFieldTooLong = 2;    { field's length exceeds its maximum }
  8018. c145,145
  8019. c145,145
  8020. a{ Change propagation constants for CDialogText }
  8021. c145,145
  8022. c145,145
  8023. a    dialogTextChanged = bureaucratLastChange + 1;    { indicates the text has changed in some way         }
  8024. a    dialogTextLastChange = dialogTextChanged;        { info parameter is pointer (IntegerPtr) }
  8025. a                                                    { to pane ID }
  8026. c145,145
  8027. c145,145
  8028. a{****************************************************************************}
  8029. c173,174
  8030. a{****************************************************************************}
  8031. c155,155
  8032. c155,155
  8033. a            { item data }
  8034. c179,180
  8035. a            itemHndl: Handle;        { Handle or procedure pointer for this item }
  8036. a            itemRect: Rect;            { Display rectangle for this item }
  8037. a            itemType: SignedByte;    { Item type for this item — 1 byte }
  8038. a            itemLength: SignedByte;    { Length of data }
  8039. c185,191
  8040. a            staticTextFont: Integer;        { default font to use for static text items    }
  8041. a            staticTextSize: Integer;        { default size to use for static text items    }
  8042. a            editTextFont: Integer;            { default font for edit text items                }
  8043. a            editTextSize: Integer;            { default size for edit text items                }
  8044. a            defaultBorderPen: Integer;        { default border thickness for user items    }
  8045. a                                        { and RadioGroupPanes                        }
  8046. c159,159
  8047. c199,238
  8048. a{****************************************************************************}
  8049. c240,241
  8050. a{****************************************************************************}
  8051. c243,249
  8052. a{****************************************************************************}
  8053. c251,252
  8054. a{****************************************************************************}
  8055. c238,238
  8056. c238,238
  8057. c243,243
  8058. c257,258
  8059. a            minValue: Longint;            { minimum valid value }
  8060. a            maxValue: Longint;            { maximum valid value }
  8061. a            defaultValue: Longint;        { default value if text empty. If }
  8062. a                                    { CDialogText.isRequired is FALSE, then}
  8063. a                                    { empty text is considered valid and default}
  8064. a                                    { value is returned by GetIntValue.}
  8065. a            showRangeOnErr: Boolean;    { If TRUE, validation error displays allow }
  8066. a                                    { range of integers in the alert}
  8067. c238,238
  8068. c268,300
  8069. a    { indices into validation error STR# resource for CInteger text }
  8070. c254,254
  8071. a    validateIntFailed = 3;        { text not integer or out of range }
  8072. a    validateIntRangeFailed = 4;    { same, but display allowed range in alert }
  8073. c254,254
  8074. c306,312
  8075. e
  8076. o
  8077. rFW/Tearoffs
  8078. fCCharGrid.p
  8079. x454571738,82187498
  8080. a{**************************************************}
  8081. c1,13
  8082. a{**************************************************}
  8083. c15,47
  8084. a{**************************************************}
  8085. c49,52
  8086. a{**************************************************}
  8087. c54,92
  8088. a{**************************************************}
  8089. c94,97
  8090. a{**************************************************}
  8091. c99,101
  8092. a        DisposeHandle(Handle(theCharacters));         {Get rid of list of characters        }
  8093. c103,106
  8094. a{**************************************************}
  8095. c108,111
  8096. a{**************************************************}
  8097. c105,105
  8098. c114,128
  8099. e
  8100. fCFWDesktop.p
  8101. x216991098,457343156
  8102. a{**************************************************}
  8103. c1,11
  8104. a{**************************************************}
  8105. c13,18
  8106. a    TCL, FW_Tearoffs, CWindow, LowMem;
  8107. c17,17
  8108. c20,20
  8109. c22,24
  8110. a{* Class Constant *}
  8111. c23,23
  8112. c27,30
  8113. a{**************************************************}
  8114. c32,35
  8115. a{**************************************************}
  8116. c37,51
  8117. a{**************************************************}
  8118. c53,56
  8119. a{**************************************************}
  8120. c50,50
  8121. c59,64
  8122. a        DisposePtr(Ptr(macPort));        {   assocated data structures        }
  8123. c58,58
  8124. c67,70
  8125. a{**************************************************}
  8126. c72,76
  8127. a{**************************************************}
  8128. c69,69
  8129. c79,102
  8130. a{**************************************************}
  8131. c104,107
  8132. a{**************************************************}
  8133. c97,97
  8134. c110,118
  8135. a{**************************************************}
  8136. c120,123
  8137. a{**************************************************}
  8138. c117,117
  8139. c126,137
  8140. a{**************************************************}
  8141. c139,142
  8142. a{**************************************************}
  8143. c130,130
  8144. c145,256
  8145. a                LMSetCurActivate(NIL);     { Nuke any pending activate event    }
  8146. c258,261
  8147. a{**************************************************}
  8148. c263,266
  8149. a{**************************************************}
  8150. c248,248
  8151. c269,281
  8152. a{**************************************************}
  8153. c283,286
  8154. a{**************************************************}
  8155. c268,268
  8156. c289,301
  8157. a{**************************************************}
  8158. c303,306
  8159. a{**************************************************}
  8160. c288,288
  8161. c309,309
  8162. a                                VAR macEvent: EventRecord);
  8163. c311,366
  8164. a{**************************************************}
  8165. c368,371
  8166. a{**************************************************}
  8167. c347,347
  8168. c374,384
  8169. a{**************************************************}
  8170. c386,389
  8171. a{**************************************************}
  8172. c362,362
  8173. c392,402
  8174. a{**************************************************}
  8175. c404,408
  8176. a{**************************************************}
  8177. c383,383
  8178. c411,422
  8179. a{**************************************************}
  8180. c424,428
  8181. a{**************************************************}
  8182. c401,401
  8183. c431,442
  8184. a{**************************************************}
  8185. c444,447
  8186. a{**************************************************}
  8187. c421,421
  8188. c450,463
  8189. a{**************************************************}
  8190. c465,468
  8191. a{**************************************************}
  8192. c441,441
  8193. c471,476
  8194. a{**************************************************}
  8195. c478,493
  8196. a{**************************************************}
  8197. c456,456
  8198. c496,560
  8199. e
  8200. fCGridSelector.p
  8201. x309060851,36888201
  8202. a{**************************************************}
  8203. c1,11
  8204. a{**************************************************}
  8205. c13,24
  8206. a{**************************************************}
  8207. c26,29
  8208. a{**************************************************}
  8209. c31,65
  8210. a{**************************************************}
  8211. c67,70
  8212. a{**************************************************}
  8213. c72,97
  8214. a{**************************************************}
  8215. c99,102
  8216. a{**************************************************}
  8217. c96,96
  8218. c105,107
  8219. c109,115
  8220. c117,142
  8221. a{**************************************************}
  8222. c144,148
  8223. a{**************************************************}
  8224. c141,141
  8225. c151,166
  8226. a{**************************************************}
  8227. c168,172
  8228. a{**************************************************}
  8229. c165,165
  8230. c175,195
  8231. a{**************************************************}
  8232. c197,200
  8233. a{**************************************************}
  8234. c187,187
  8235. c203,226
  8236. a{**************************************************}
  8237. c228,232
  8238. a{**************************************************}
  8239. c225,225
  8240. c235,240
  8241. a{**************************************************}
  8242. c242,245
  8243. a{**************************************************}
  8244. c234,234
  8245. c248,254
  8246. e
  8247. fCMenuDefProc.p
  8248. x101322953,475211470
  8249. a{**************************************************}
  8250. c1,12
  8251. a{**************************************************}
  8252. c14,24
  8253. a{$IFC POWERPC}
  8254. aUSES MixedMode;
  8255. c24,24
  8256. aPROCEDURE BuildRoutineDescriptor(
  8257. a                    VAR aDescriptor    : RoutineDescriptor;
  8258. a                        procInfo    : ProcInfoType;
  8259. a                        theProc        : MenuDefProcPtr); C; EXTERNAL;
  8260. c24,24
  8261. a{$ENDC}
  8262. c25,25
  8263. a{**************************************************}
  8264. c27,30
  8265. a{**************************************************}
  8266. c32,40
  8267. a{$IFC MAC68K}
  8268. c41,42
  8269. a        theMDEFP^.itsMenuDefProc := self;
  8270. c44,45
  8271. a{$ELSEC}
  8272. a        { Create a MenuDefUPP for PowerPC builds… }
  8273. a        SetHandleSize(Handle(theMDEF), sizeof(GenericMDEFRec));
  8274. a        BuildRoutineDescriptor(theMDEF^^.defProc, uppMenuDefProcInfo, @GenericMDEF);
  8275. a        theMDEF^^.itsMenuDefProc := self;
  8276. a{$ENDC}
  8277. c46,48
  8278. a{**************************************************}
  8279. c50,54
  8280. a{**************************************************}
  8281. c56,62
  8282. a{**************************************************}
  8283. c64,68
  8284. a{**************************************************}
  8285. c70,79
  8286. a{**************************************************}
  8287. c81,85
  8288. a{**************************************************}
  8289. c78,78
  8290. c88,98
  8291. a{**************************************************}
  8292. c100,104
  8293. a{**************************************************}
  8294. c97,97
  8295. c107,115
  8296. e
  8297. fCPaneMDEF.p
  8298. x274999569,326631149
  8299. a{****************************************************************************}
  8300. c1,15
  8301. a{****************************************************************************}
  8302. c17,30
  8303. a        TEARMARGIN = 10;    { Margin for tearing off a menu    }
  8304. a        TEARWAIT = 6;        { Ticks to delay while dragging    }
  8305. a        FRAME_WIDTH = 1;    { Thickness of window frame        }
  8306. a        DRAG_WIDTH = 10;    { Thickness of window drag bar        }
  8307. c30,30
  8308. a{****************************************************************************}
  8309. c37,39
  8310. a{****************************************************************************}
  8311. c41,43
  8312. a        { Initialize superclass            }
  8313. c42,42
  8314. c46,51
  8315. a{****************************************************************************}
  8316. c53,56
  8317. a{****************************************************************************}
  8318. c58,59
  8319. a            paneFrame: LongRect;    { Frame of pane to be drawn        }
  8320. c61,63
  8321. a        itsPane.GetFrame(paneFrame);        { Set up pane's drawing environs    }
  8322. a        LongToQDRect(paneFrame, qdFrame);    { Draw pane inside the menu        }
  8323. c66,68
  8324. a    { Check if the entire menu is disabled.  If so, the menu    }
  8325. a    { should be drawn in gray. We draw in gray by BIC'ing        }
  8326. a    { a gray pattern over the entire pane.                        }
  8327. c68,68
  8328. c73,74
  8329. a                PenMode(patBic);            { ??? Should selections be            }
  8330. a                PenPat(qd.gray);                {     unhilited?                    }
  8331. c77,83
  8332. a{****************************************************************************}
  8333. c85,88
  8334. a{****************************************************************************}
  8335. c90,93
  8336. a    { Get dimensions of its pane        }
  8337. c80,80
  8338. c96,105
  8339. a{****************************************************************************}
  8340. c107,109
  8341. a{****************************************************************************}
  8342. a    procedure CPaneMDEF.TearOffMenu (menuRect: Rect;    { Bounding box of menu                }
  8343. a                                    mouseLoc: Point);                                { Mouse location                    }
  8344. c91,91
  8345. c95,95
  8346. a            margins: Rect;            { Margins around menu rectangle    }
  8347. a            tearRect: Rect;        { Current location of tear off        }
  8348. a            grayPat: Pattern;        { Gray pattern for dragging        }
  8349. a            ticks: Longint;        { Tick count after delay            }
  8350. c93,93
  8351. c95,95
  8352. a    { Tear off occurs only when the    }
  8353. a    {   mouse is in certain places        }
  8354. c95,95
  8355. c124,125
  8356. a                                { Prepare to tear off the menu        }
  8357. a                                {   by dragging a gray outline        }
  8358. a                                {   of the menu                    }
  8359. c129,129
  8360. a                PenPat(qd.gray);
  8361. a                PenMode(patXor);        { Toggle gray rect on the screen    }
  8362. c132,134
  8363. a                            { Seize control until the mouse    }
  8364. a                            {   is released or leaves the        }
  8365. a                            {   valid tear off region            }
  8366. c100,100
  8367. a                            { Make a rectangle which is the    }
  8368. a                            {   same size as the window which    }
  8369. a                            {   holds the tear off menu        }
  8370. c100,100
  8371. c143,148
  8372. a                            { Drawing and then undrawing a gray outline at }
  8373. a                            { the current location gives the illlusion of    }
  8374. a                            { dragging the tear off menu                    }
  8375. c114,114
  8376. c114,114
  8377. a                    FrameRect(tearRect);            { Draw the gray outline            }
  8378. a                    Delay(TEARWAIT, ticks);            { Wait a while                        }
  8379. a                    FrameRect(tearRect);            { Undraw the gray outline            }
  8380. a                    GetMouse(mouseLoc);                { Check current mouse location        }
  8381. c114,114
  8382. c114,114
  8383. c160,161
  8384. a                PenNormal;                            { Restore normal pen state            }
  8385. c114,114
  8386. a            { Check reason for loop exit        }
  8387. a            {   region                            }
  8388. c114,114
  8389. c167,168
  8390. a            { Mouse released inside tear off    }
  8391. c170,178
  8392. a{****************************************************************************}
  8393. c180,182
  8394. a{****************************************************************************}
  8395. a    function CPaneMDEF.PtInTearRgn (hitPt: Point;    { Mouse location                    }
  8396. a                                    menuRect: Rect): Boolean;                    { Bounding box of menu                }
  8397. c138,138
  8398. c187,188
  8399. a        { Valid tear off region:  Mouse is not in the menu bar and   }
  8400. a        { at least TEARMARGIN pixels from the left, right, or bottom }
  8401. a        { sides of the menu.                                          }
  8402. c138,138
  8403. c193,198
  8404. a{****************************************************************************}
  8405. c200,202
  8406. a{****************************************************************************}
  8407. c204,206
  8408. a            newOrigin: Point;            { New origin for pane                }
  8409. a            desktopBounds: Rect;        { Boundaries of the desktop        }
  8410. c209,211
  8411. a        GetPort(savePort);            { Save the current port            }
  8412. a        gDesktop.Prepare;            { Draw into our Desktop's port        }
  8413. c148,148
  8414. a        itsPane.GetFrame(paneFrame);    { Get size of pane and Desktop        }
  8415. c216,218
  8416. a        tsaveClip := NewRgn;        { Save clipping region of Desktop    }
  8417. c220,222
  8418. a                                { Pane will be drawn in Desktop's    }
  8419. a                                {   port rather than its own, so    }
  8420. a                                {   we must adjust the pane's        }
  8421. a                                {   origin accordingly                }
  8422. c158,158
  8423. c228,231
  8424. a                                { Pane's frame corresponds to the    }
  8425. a                                {   menu rectangle, so make sure    }
  8426. a                                {   we don't draw outside the menu    }
  8427. c159,159
  8428. c236,239
  8429. a{****************************************************************************}
  8430. c241,243
  8431. a{****************************************************************************}
  8432. c172,172
  8433. c246,250
  8434. a            { Restore origin and clipping        }
  8435. a            {   region of our desktop            }
  8436. c173,173
  8437. c217,217
  8438. c255,262
  8439. e
  8440. fCPatternGrid.p
  8441. x139780108,250984778
  8442. a{**************************************************}
  8443. c1,8
  8444. a{**************************************************}
  8445. c10,32
  8446. a{** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S **}
  8447. c31,32
  8448. c34,34
  8449. a{**************************************************}
  8450. c38,41
  8451. a{**************************************************}
  8452. c43,66
  8453. a{**************************************************}
  8454. c68,71
  8455. a{**************************************************}
  8456. c66,66
  8457. c74,75
  8458. a        DisposeHandle(Handle(thePatterns));    { Get rid of list of pattern ID's        }
  8459. c77,80
  8460. a{**************************************************}
  8461. c82,85
  8462. a{**************************************************}
  8463. c79,79
  8464. c88,97
  8465. a{**************************************************}
  8466. c99,102
  8467. a{**************************************************}
  8468. c96,96
  8469. c105,123
  8470. a                    PenPat(qd.white);
  8471. c125,157
  8472. a{**************************************************}
  8473. c159,162
  8474. a{**************************************************}
  8475. c156,156
  8476. c165,171
  8477. e
  8478. fCSelector.p
  8479. x68761416,437858804
  8480. a{**************************************************}
  8481. c1,11
  8482. a{**************************************************}
  8483. c13,23
  8484. a{**************************************************}
  8485. c25,28
  8486. a{**************************************************}
  8487. c30,45
  8488. a{**************************************************}
  8489. c47,53
  8490. a{**************************************************}
  8491. c55,78
  8492. a{**************************************************}
  8493. c80,84
  8494. a{**************************************************}
  8495. c78,78
  8496. c87,98
  8497. a{**************************************************}
  8498. c100,104
  8499. a{**************************************************}
  8500. c97,97
  8501. c107,120
  8502. a{**************************************************}
  8503. c122,125
  8504. a{**************************************************}
  8505. c119,119
  8506. c128,133
  8507. a{**************************************************}
  8508. c135,140
  8509. a{**************************************************}
  8510. c132,132
  8511. c143,148
  8512. a{**************************************************}
  8513. c150,155
  8514. a{**************************************************}
  8515. c142,142
  8516. c158,163
  8517. a{**************************************************}
  8518. c165,169
  8519. a{**************************************************}
  8520. c157,157
  8521. c172,177
  8522. a{**************************************************}
  8523. c179,183
  8524. a{**************************************************}
  8525. c171,171
  8526. c186,191
  8527. a{**************************************************}
  8528. c193,199
  8529. a{**************************************************}
  8530. c185,185
  8531. c202,207
  8532. e
  8533. fCSelectorMDEF.p
  8534. x356713452,344053314
  8535. a{****************************************************************************}
  8536. c1,18
  8537. a{****************************************************************************}
  8538. c20,29
  8539. aUSES LowMem;
  8540. c29,29
  8541. a{****************************************************************************}
  8542. c31,33
  8543. a{****************************************************************************}
  8544. c35,42
  8545. a{****************************************************************************}
  8546. c44,46
  8547. a{****************************************************************************}
  8548. c48,56
  8549. a    { hitPt is expressed in global coordinates, but we need it    }
  8550. a    { in pane coordinates. Take advantage of the fact that        }
  8551. a    { SetupQuickDraw sets up the grafport so the origin is the    }
  8552. a    { top left of the menu pane, and use the Toolbox's         }
  8553. a    { GlobalToLocal to convert the hitPt to pane coordinates.    }
  8554. c56,56
  8555. c63,68
  8556. a        { Support the new MenuChoice feature described in IM V-240. }
  8557. a        { The low-memory global MenuDisable is updated to reflect   }
  8558. a        { the current menu and item ID, even if the mouse is over a }
  8559. a        { disabled item or menu. The HiWord of MenuDisable contains }
  8560. a        { the menu ID and the LoWord the menu item number.             }
  8561. c62,62
  8562. a{                MenuDisable^ := BOR(BSL(macMenu^^.menuID, 16), theItem);}
  8563. a                LMSetMenuDisable(BOR(BSL(macMenu^^.menuID, 16), theItem));
  8564. c62,62
  8565. c77,78
  8566. a                                { Choosing item from enabled menu    }
  8567. a                                { Provide visual feedback by        }
  8568. a                                {   dynamically hiliting the item    }
  8569. c82,85
  8570. a                                { No item is being chosen. Either    }
  8571. a                                {   pointing at empty space or the    }
  8572. a                                {   menu is disable.                }
  8573. c89,94
  8574. a                                { Mouse is outside the menu        }
  8575. a                                { Return item number of zero        }
  8576. c74,74
  8577. a{                MenuDisable^ := BSL(Longint(macMenu^^.menuID), 16);}
  8578. a                LMSetMenuDisable(BSL(Longint(macMenu^^.menuID), 16));
  8579. c99,100
  8580. a                                { Tear off the menu if we have a    }
  8581. a                                {   TearOffMenu object and the        }
  8582. a                                {    menu is enabled (not dimmed)    }
  8583. c76,76
  8584. c105,110
  8585. e
  8586. fCTearChore.p
  8587. x182182516,282845440
  8588. a{**************************************************}
  8589. c1,11
  8590. a{**************************************************}
  8591. c13,23
  8592. a{**************************************************}
  8593. c25,28
  8594. a{**************************************************}
  8595. c30,36
  8596. a{**************************************************}
  8597. c38,42
  8598. a{**************************************************}
  8599. c44,51
  8600. e
  8601. fCTearOffMenu.p
  8602. x327448192,127105320
  8603. a{**************************************************}
  8604. c1,10
  8605. a{**************************************************}
  8606. c12,22
  8607. a{**************************************************}
  8608. c24,27
  8609. a{**************************************************}
  8610. c29,41
  8611. a        itsWindow.IWindow(WINDid, TRUE, gDesktop, self);
  8612. c43,51
  8613. a{**************************************************}
  8614. c53,57
  8615. a{**************************************************}
  8616. c59,70
  8617. a{**************************************************}
  8618. c72,76
  8619. a{**************************************************}
  8620. c69,69
  8621. c79,88
  8622. a{**************************************************}
  8623. c90,94
  8624. a{**************************************************}
  8625. c87,87
  8626. c97,102
  8627. a{**************************************************}
  8628. c104,107
  8629. a{**************************************************}
  8630. c96,96
  8631. c110,117
  8632. a        theTearChore.ITearChore(self);    {   chore for moving the tear off    }
  8633. c119,124
  8634. a{**************************************************}
  8635. c126,130
  8636. a{**************************************************}
  8637. c116,116
  8638. c133,139
  8639. a{**************************************************}
  8640. c141,145
  8641. a{**************************************************}
  8642. c132,132
  8643. c148,153
  8644. a{**************************************************}
  8645. c155,161
  8646. a{**************************************************}
  8647. c147,147
  8648. c164,169
  8649. a{**************************************************}
  8650. c171,175
  8651. a{**************************************************}
  8652. c163,163
  8653. c178,184
  8654. e
  8655. fFW_Tearoffs.p
  8656. x277250070,367623466
  8657. a{**************************************************}
  8658. c1,8
  8659. a{**************************************************}
  8660. c10,17
  8661. a{**************************************************}
  8662. c19,22
  8663. a{**************************************************}
  8664. c24,29
  8665. a                                { Instance Variables }
  8666. c27,27
  8667. c32,35
  8668. a                                { Instance Methods }
  8669. c31,31
  8670. c38,48
  8671. a                    { TCL 1.1: points should not be var parameters }
  8672. c43,43
  8673. c51,63
  8674. a{**************************************************}
  8675. c65,68
  8676. a{**************************************************}
  8677. c62,62
  8678. c71,73
  8679. a                                { Instance Variables }
  8680. c70,70
  8681. c76,78
  8682. a                                { Instance Methods }
  8683. c70,70
  8684. c81,103
  8685. a{**************************************************}
  8686. c105,108
  8687. a{**************************************************}
  8688. c102,102
  8689. c111,118
  8690. a                                { Instance Variables }
  8691. c110,110
  8692. c121,122
  8693. a                                { Instance Methods }
  8694. c110,110
  8695. c125,136
  8696. a{**************************************************}
  8697. c138,141
  8698. a{**************************************************}
  8699. c130,130
  8700. c144,146
  8701. a                                { Instance Variables }
  8702. c130,130
  8703. c149,151
  8704. a                                { Instance Methods }
  8705. c135,135
  8706. c154,171
  8707. a                                VAR macEvent: EventRecord);
  8708. c156,156
  8709. c174,190
  8710. a{**************************************************}
  8711. c192,195
  8712. a{**************************************************}
  8713. c188,188
  8714. c198,200
  8715. a                                { No Instance Variables }
  8716. c188,188
  8717. a                                { Instance Methods }
  8718. c188,188
  8719. c205,220
  8720. a{**************************************************}
  8721. c222,225
  8722. a{**************************************************}
  8723. c202,202
  8724. c228,230
  8725. a                                { Instance Variables }
  8726. c206,206
  8727. c233,237
  8728. a                                { Instance Methods }
  8729. c219,219
  8730. c240,259
  8731. a{**************************************************}
  8732. c261,264
  8733. a{**************************************************}
  8734. c237,237
  8735. c267,269
  8736. a                                { Instance Variables }
  8737. c243,243
  8738. c272,274
  8739. a                                { Instance Methods }
  8740. c249,249
  8741. c277,296
  8742. a{**************************************************}
  8743. c298,301
  8744. a{**************************************************}
  8745. c269,269
  8746. c304,306
  8747. a                                { No Instance Variables }
  8748. c274,274
  8749. a                                { Instance Methods }
  8750. c274,274
  8751. c311,321
  8752. a{**************************************************}
  8753. c323,326
  8754. a{**************************************************}
  8755. c292,292
  8756. c304,304
  8757. c330,331
  8758. a                                { Instance Variables }
  8759. c295,295
  8760. c334,335
  8761. a                                { Instance Methods }
  8762. c303,303
  8763. c338,344
  8764. a{**************************************************}
  8765. c346,349
  8766. a{**************************************************}
  8767. c310,310
  8768. c329,329
  8769. c353,354
  8770. a                                { Instance Variables }
  8771. c314,314
  8772. c357,365
  8773. a                                { Instance Methods }
  8774. c328,328
  8775. c368,385
  8776. a{**************************************************}
  8777. c387,390
  8778. a{**************************************************}
  8779. c351,352
  8780. c394,410
  8781. a{**************************************************}
  8782. c387,388
  8783. c414,419
  8784. a{**************************************************}
  8785. c377,377
  8786. c377,377
  8787. c403,403
  8788. c424,459
  8789. e
  8790. rWindoid WDEF ƒ
  8791. fWindoidWDEF.p
  8792. x270590446,20201415
  8793. c0,36
  8794. aUSES Windows, ToolUtils;
  8795. c38,38
  8796. a{$MAIN}
  8797. c338,339
  8798. c39,368
  8799. e
  8800. o
  8801. o
  8802. rMore classes
  8803. fCBitMap.p
  8804. x50712761,131702445
  8805. a{**************************************************}
  8806. c1,8
  8807. a{**************************************************}
  8808. c10,23
  8809. a{** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S **}
  8810. c22,23
  8811. c25,25
  8812. a{**************************************************}
  8813. c29,32
  8814. a{**************************************************}
  8815. c34,87
  8816. a{**************************************************}
  8817. c89,92
  8818. a{**************************************************}
  8819. c87,87
  8820. c95,97
  8821. a            DisposePtr(macBitMap.baseAddr);
  8822. c94,94
  8823. c100,102
  8824. a                DisposePtr(Ptr(macPort));
  8825. c104,110
  8826. a{** A C C E S S I N G   M E T H O D S **}
  8827. c105,105
  8828. c105,105
  8829. c105,105
  8830. a{**************************************************}
  8831. c116,120
  8832. a{**************************************************}
  8833. c110,110
  8834. c123,124
  8835. a        QDToLongRect(macBitMap.bounds, theBounds);
  8836. c126,128
  8837. a{**************************************************}
  8838. c130,134
  8839. a{**************************************************}
  8840. c122,122
  8841. c137,145
  8842. a{**************************************************}
  8843. c147,150
  8844. a{**************************************************}
  8845. c136,136
  8846. c153,158
  8847. a{**************************************************}
  8848. c160,163
  8849. a{**************************************************}
  8850. c152,152
  8851. c166,171
  8852. a{**************************************************}
  8853. c173,178
  8854. a{**************************************************}
  8855. c165,165
  8856. c181,205
  8857. a{** I M A G E   C O P Y I N G   M E T H O D S **}
  8858. c185,185
  8859. c189,189
  8860. c189,189
  8861. a{**************************************************}
  8862. c211,220
  8863. a{**************************************************}
  8864. c198,198
  8865. c223,228
  8866. a        CopyBits(qd.thePort^.portBits, macBitMap, rFrom, rTo, xferMode, maskRgn);
  8867. c230,232
  8868. a{**************************************************}
  8869. c234,243
  8870. a{**************************************************}
  8871. c222,222
  8872. c246,251
  8873. a        CopyBits(macBitMap, qd.thePort^.portBits, rFrom, rTo, xferMode, maskRgn);
  8874. c230,232
  8875. c231,231
  8876. a{** P R E P A R I N G   M E T H O D S **}
  8877. c231,232
  8878. c231,231
  8879. a{**************************************************}
  8880. c262,269
  8881. a{**************************************************}
  8882. c245,245
  8883. c272,275
  8884. a                saveBitMap := qd.thePort^.portBits;    { Save current bit map for later    }
  8885. c277,288
  8886. a{**************************************************}
  8887. c290,295
  8888. a{**************************************************}
  8889. c271,271
  8890. c298,307
  8891. e
  8892. fCBitMapPane.p
  8893. x415614287,90409867
  8894. a{**************************************************}
  8895. c1,8
  8896. a{**************************************************}
  8897. c10,22
  8898. a{** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S **}
  8899. c21,22
  8900. c24,24
  8901. a{**************************************************}
  8902. c28,31
  8903. a{**************************************************}
  8904. c33,67
  8905. a{**************************************************}
  8906. c69,72
  8907. a{**************************************************}
  8908. c67,67
  8909. c75,84
  8910. a{** A C C E S S I N G   M E T H O D S **}
  8911. c79,79
  8912. c79,79
  8913. c82,82
  8914. a{**************************************************}
  8915. c90,93
  8916. a{**************************************************}
  8917. c86,86
  8918. c96,101
  8919. a{**************************************************}
  8920. c103,106
  8921. a{**************************************************}
  8922. c100,100
  8923. c109,115
  8924. a{** D R A W I N G   M E T H O D S **}
  8925. c108,108
  8926. c108,108
  8927. c108,108
  8928. a{**************************************************}
  8929. c121,124
  8930. a{**************************************************}
  8931. c113,113
  8932. c127,142
  8933. e
  8934. fCPictFile.p
  8935. x91140466,312678590
  8936. a{**************************************************}
  8937. c1,10
  8938. a{**************************************************}
  8939. c12,20
  8940. a{* Class Constant *}
  8941. c19,19
  8942. c23,29
  8943. a{**************************************************}
  8944. c31,34
  8945. a{**************************************************}
  8946. c36,44
  8947. a{**************************************************}
  8948. c46,49
  8949. a{**************************************************}
  8950. c44,44
  8951. c52,54
  8952. a            DisposeHandle(header);
  8953. c51,51
  8954. c57,60
  8955. a{**************************************************}
  8956. c62,65
  8957. a{**************************************************}
  8958. c59,59
  8959. c68,107
  8960. a{**************************************************}
  8961. c109,113
  8962. a{**************************************************}
  8963. c104,104
  8964. c116,149
  8965. e
  8966. fCPNTGFile.p
  8967. x516302592,473935182
  8968. a{**************************************************}
  8969. c1,10
  8970. a{**************************************************}
  8971. c12,22
  8972. a{* Class Constants *}
  8973. c21,21
  8974. c25,32
  8975. a{**************************************************}
  8976. c34,37
  8977. a{**************************************************}
  8978. c39,53
  8979. a{**************************************************}
  8980. c55,58
  8981. a{**************************************************}
  8982. c53,53
  8983. c61,63
  8984. a            DisposeHandle(header);
  8985. c60,60
  8986. c66,69
  8987. a{**************************************************}
  8988. c71,75
  8989. a{**************************************************}
  8990. c68,68
  8991. c78,93
  8992. a            ForgetObject(theBitMap);
  8993. c95,100
  8994. a        theBitMap := nil;
  8995. c90,90
  8996. c103,163
  8997. a        DisposePtr(packedBits);                { No longer need compressed image    }
  8998. c165,169
  8999. a{**************************************************}
  9000. c171,174
  9001. a{**************************************************}
  9002. c163,163
  9003. c177,217
  9004. e
  9005. fCResFile.p
  9006. x179930255,224058045
  9007. a{**************************************************}
  9008. c1,8
  9009. a{**************************************************}
  9010. c10,21
  9011. a{** C O N S T R U C T I O N / D E S T R U C T I O N   M E T H O D S **}
  9012. c20,21
  9013. c23,23
  9014. a{**************************************************}
  9015. c27,30
  9016. a{**************************************************}
  9017. c32,39
  9018. a{**************************************************}
  9019. c41,45
  9020. a{**************************************************}
  9021. c47,60
  9022. a{**************************************************}
  9023. c62,65
  9024. a{**************************************************}
  9025. c59,59
  9026. c68,78
  9027. a{**************************************************}
  9028. c80,83
  9029. a{**************************************************}
  9030. c77,77
  9031. c86,90
  9032. a{****************************************************************************}
  9033. c92,94
  9034. a{****************************************************************************}
  9035. c85,85
  9036. c97,102
  9037. a{****************************************************************************}
  9038. c104,106
  9039. a{****************************************************************************}
  9040. c93,93
  9041. c109,110
  9042. a        Assert(IsOpen);
  9043. c96,96
  9044. c113,119
  9045. a{****************************************************************************}
  9046. c121,123
  9047. a{****************************************************************************}
  9048. c108,108
  9049. c126,136
  9050. a        FailOSErr(PBHGetFInfoSync(@pBlock));
  9051. c119,119
  9052. a    { Assume that if the resource fork logical EOF is non-zero    }
  9053. a    { then a resource fork exists.                                }
  9054. c122,122
  9055. c142,147
  9056. a{****************************************************************************}
  9057. c149,151
  9058. a {****************************************************************************}
  9059. c131,131
  9060. c154,158
  9061. a    { only call inherited if file doesn't already exist on disk    }
  9062. c136,136
  9063. c161,172
  9064. e
  9065. fCStack.p
  9066. x311221665,445438897
  9067. a{**************************************************}
  9068. c1,11
  9069. a{**************************************************}
  9070. c13,23
  9071. a{**************************************************}
  9072. c25,28
  9073. a{**************************************************}
  9074. c30,36
  9075. a{**************************************************}
  9076. c38,41
  9077. a{**************************************************}
  9078. c43,49
  9079. a{**************************************************}
  9080. c51,55
  9081. a{**************************************************}
  9082. c49,49
  9083. c58,86
  9084. e
  9085. fCTextEnvirons.p
  9086. x394566399,25467027
  9087. a{**************************************************}
  9088. c1,10
  9089. a{**************************************************}
  9090. c12,22
  9091. a{**************************************************}
  9092. c24,27
  9093. a{**************************************************}
  9094. c29,38
  9095. a{**************************************************}
  9096. c40,43
  9097. a{**************************************************}
  9098. c45,55
  9099. a{**************************************************}
  9100. c57,60
  9101. a{**************************************************}
  9102. c54,54
  9103. c63,68
  9104. a{**************************************************}
  9105. c70,73
  9106. a{**************************************************}
  9107. c67,67
  9108. c76,82
  9109. e
  9110. fMoreTCL.p
  9111. x455964128,345181636
  9112. a{**************************************************}
  9113. c1,8
  9114. a{**************************************************}
  9115. c10,19
  9116. a{**************************************************}
  9117. c21,24
  9118. a{**************************************************}
  9119. c26,29
  9120. a                                { Instance Variables }
  9121. c26,26
  9122. c32,37
  9123. a                                { Instance Methods }
  9124. c37,37
  9125. c40,64
  9126. a{**************************************************}
  9127. c66,69
  9128. a{**************************************************}
  9129. c63,63
  9130. c72,74
  9131. a                                { Instance Variables }
  9132. c71,71
  9133. c77,78
  9134. a                                { Instance Methods }
  9135. c71,71
  9136. c81,97
  9137. a{**************************************************}
  9138. c99,102
  9139. a{**************************************************}
  9140. c93,93
  9141. c105,107
  9142. a                                { Instance Variables }
  9143. c97,97
  9144. c110,111
  9145. a                                { Instance Methods }
  9146. c113,123
  9147. a{**************************************************}
  9148. c125,128
  9149. a{**************************************************}
  9150. c116,116
  9151. c131,133
  9152. a                                { Instance Variables }
  9153. c122,122
  9154. c136,137
  9155. a                                { Instance Methods }
  9156. c122,122
  9157. c140,152
  9158. a{**************************************************}
  9159. c154,157
  9160. a{**************************************************}
  9161. c139,139
  9162. c160,162
  9163. a                                { Instance Variables }
  9164. c143,143
  9165. c165,166
  9166. a                                { Instance Methods }
  9167. c147,147
  9168. c169,182
  9169. a{**************************************************}
  9170. c184,187
  9171. a{**************************************************}
  9172. c166,166
  9173. c190,192
  9174. a                                { No Instance Variables }
  9175. c170,170
  9176. a                                { Instance Methods }
  9177. c170,170
  9178. c197,203
  9179. a{**************************************************}
  9180. c205,208
  9181. a{**************************************************}
  9182. c182,182
  9183. c190,190
  9184. c212,219
  9185. a                                { Instance Variables }
  9186. c192,192
  9187. c222,223
  9188. a                                { Instance Methods }
  9189. c196,196
  9190. c226,237
  9191. e
  9192. o
  9193. rStyledText classes
  9194. fCStyleTEClipboard.p
  9195. x25705531,261526315
  9196. a{****************************************************************************}
  9197. c1,14
  9198. a{            styleClip.IStyleTEClipboard( self, TRUE);}
  9199. c16,25
  9200. a{****************************************************************************}
  9201. c27,36
  9202. a{****************************************************************************}
  9203. c38,40
  9204. a{****************************************************************************}
  9205. c42,47
  9206. a{****************************************************************************}
  9207. c49,54
  9208. a{****************************************************************************}
  9209. c56,86
  9210. a                        text.IStyleText(itsScrollPane, self, 1, 1, 0, 0, sizELASTIC, sizELASTIC, 1000);
  9211. c88,96
  9212. a                                                    { CStyleText makes its own copy. }
  9213. c98,111
  9214. e
  9215. fCStyleTEEditTask.p
  9216. x94632181,29411907
  9217. a{****************************************************************************}
  9218. c1,15
  9219. a{****************************************************************************}
  9220. c17,26
  9221. a{****************************************************************************}
  9222. c28,37
  9223. a{****************************************************************************}
  9224. c39,56
  9225. a{****************************************************************************}
  9226. c58,64
  9227. a{****************************************************************************}
  9228. c66,88
  9229. a{****************************************************************************}
  9230. c90,93
  9231. a{****************************************************************************}
  9232. c95,131
  9233. a        { Due to backspacing, the save styled scrap handle may}
  9234. a        { begin with negative offsets. Before attempting to}
  9235. a        { restore these styles we must fix up the offsets}
  9236. a        { to start at 0.}
  9237. c131,131
  9238. c137,160
  9239. a{****************************************************************************}
  9240. c162,162
  9241. a{****************************************************************************}
  9242. c164,179
  9243. a{****************************************************************************}
  9244. c181,186
  9245. a{****************************************************************************}
  9246. c188,199
  9247. a    {)
  9248. c201,206
  9249. a{     }
  9250. c199,199
  9251. c209,212
  9252. a        { make up a style scrap element for the char to be deleted.    }
  9253. a        { Then we'll see if it matches the last style in the            }
  9254. a        { saved scrap. If not, we need to insert it to the scrap        }
  9255. c199,199
  9256. c217,220
  9257. a        { remaining fields are equivalent to a TextStyle record    }
  9258. c208,208
  9259. c223,225
  9260. a        { CheckNewStyle inserts the new style at the head of the    }
  9261. a        { style scrap if its new. Otherwise, we just decrement        }
  9262. a        { the starting offset for the first style. This is            }
  9263. a        { faster than running through the whole table, fixing        }
  9264. a        { up offsets each time the user backspaces, but we have    }
  9265. a        { to be sure and fix these up later, before attempting to    }
  9266. a        { use these styles                                            }
  9267. c208,208
  9268. c234,239
  9269. a{****************************************************************************}
  9270. c241,247
  9271. a{****************************************************************************}
  9272. c249,268
  9273. a        { make up a style scrap element for the char to be deleted.    }
  9274. c239,239
  9275. c271,276
  9276. a        { remaining fields are equivalent to a TextStyle record    }
  9277. c260,260
  9278. c279,286
  9279. a{****************************************************************************}
  9280. c288,290
  9281. a{****************************************************************************}
  9282. c292,299
  9283. a{****************************************************************************}
  9284. c301,306
  9285. a{****************************************************************************}
  9286. c308,322
  9287. a    { compare scrapEl with either first or last scrapElement in scrap handle    }
  9288. a    { but don't compare the scrpStartChar fields                                }
  9289. a    { If they don't match, then a new ScrpSTElement is inserted                }
  9290. c286,286
  9291. c327,332
  9292. a        { if atStart, then move old styles down            }
  9293. c299,299
  9294. c335,339
  9295. a        { place new style in position, increment count        }
  9296. c299,299
  9297. c342,349
  9298. e
  9299. fCStyleTEStyleTask.p
  9300. x206443299,266841547
  9301. a{****************************************************************************}
  9302. c1,11
  9303. a{****************************************************************************}
  9304. c13,22
  9305. a{****************************************************************************}
  9306. c24,29
  9307. a{****************************************************************************}
  9308. c31,43
  9309. a        self.selStart := selStart;
  9310. a        self.selEnd := selEnd;
  9311. c46,47
  9312. a{****************************************************************************}
  9313. c49,52
  9314. a{****************************************************************************}
  9315. c54,86
  9316. a                SaveStyle;                { save the current styling        }
  9317. c81,81
  9318. c89,92
  9319. a                RestoreStyle;            { restore the previous styling }
  9320. c86,86
  9321. c95,96
  9322. a                oldStyles := newStyles;    { swap current and previous    }
  9323. c88,88
  9324. c99,113
  9325. a{****************************************************************************}
  9326. c115,117
  9327. a{****************************************************************************}
  9328. c119,120
  9329. a        oldStyles := NIL;    { GetStyleScrap may fail    }
  9330. c109,109
  9331. c123,126
  9332. a{****************************************************************************}
  9333. c128,130
  9334. a{****************************************************************************}
  9335. c132,145
  9336. a{****************************************************************************}
  9337. c147,147
  9338. a{****************************************************************************}
  9339. c149,155
  9340. e
  9341. fCStyleText.p
  9342. x346872148,366216718
  9343. a{****************************************************************************}
  9344. c1,16
  9345. a{****************************************************************************}
  9346. c18,28
  9347. a    Script, Fonts;
  9348. c27,27
  9349. c31,32
  9350. a    kHScrollStep = 10;        { horizontal scroll unit    }
  9351. c30,30
  9352. a{****************************************************************************}
  9353. c36,38
  9354. a{****************************************************************************}
  9355. c40,49
  9356. a{****************************************************************************}
  9357. c51,53
  9358. a{****************************************************************************}
  9359. c55,62
  9360. a{****************************************************************************}
  9361. c64,66
  9362. a{****************************************************************************}
  9363. c68,76
  9364. a        macTE := TEStyleNew(tFrame, tFrame);
  9365. c78,81
  9366. a{****************************************************************************}
  9367. c83,86
  9368. a{****************************************************************************}
  9369. c88,94
  9370. a{****************************************************************************}
  9371. c96,100
  9372. a{****************************************************************************}
  9373. c102,123
  9374. a                    TEStylePaste(macTE);
  9375. c112,112
  9376. c126,132
  9377. a{****************************************************************************}
  9378. c134,136
  9379. a{****************************************************************************}
  9380. c138,143
  9381. a        TEStyleInsert(text, length, styles, macTE);
  9382. c129,129
  9383. c131,132
  9384. a{****************************************************************************}
  9385. c149,152
  9386. a{****************************************************************************}
  9387. c154,167
  9388. a{****************************************************************************}
  9389. c169,171
  9390. a{****************************************************************************}
  9391. c173,180
  9392. a{****************************************************************************}
  9393. c182,184
  9394. a{****************************************************************************}
  9395. c186,197
  9396. a{****************************************************************************}
  9397. c199,201
  9398. a{****************************************************************************}
  9399. c203,210
  9400. a{****************************************************************************}
  9401. c212,216
  9402. a{****************************************************************************}
  9403. c218,242
  9404. a{****************************************************************************}
  9405. c244,245
  9406. a{****************************************************************************}
  9407. c247,251
  9408. a        { only single spacing is supported! }
  9409. c242,242
  9410. c254,258
  9411. a{****************************************************************************}
  9412. c260,262
  9413. a{****************************************************************************}
  9414. c264,281
  9415. a        editTask.IStyleTEEditTask(self, editCmd, cFirstTaskIndex);
  9416. c248,248
  9417. c284,287
  9418. a{****************************************************************************}
  9419. c289,292
  9420. a{****************************************************************************}
  9421. c294,308
  9422. a        newTask.IStyleTEStyleTask(self, styleCmd, cFirstTaskIndex);
  9423. c284,284
  9424. c274,274
  9425. c312,314
  9426. a{ pre-flight allocating memory for the style scrap }
  9427. a{****************************************************************************}
  9428. c317,322
  9429. a{****************************************************************************}
  9430. c324,331
  9431. a        DisposeHandle(Handle(h));
  9432. c298,298
  9433. c298,298
  9434. a        h := TEGetStyleScrapHandle(macTE);
  9435. c298,298
  9436. a                        { shouldn't happen, but checking doesn't hurt }
  9437. c331,331
  9438. c339,342
  9439. a{****************************************************************************}
  9440. c344,347
  9441. a{****************************************************************************}
  9442. c349,353
  9443. a        TEUseStyleScrap(rangeStart, rangeEnd, styleScrap, redraw, macTE);
  9444. c355,359
  9445. e
  9446. fTCL_StyledText.p
  9447. x159076374,80241934
  9448. a{****************************************************************************}
  9449. c1,9
  9450. a{****************************************************************************}
  9451. c11,18
  9452. a{****************************************************************************}
  9453. c20,21
  9454. a{****************************************************************************}
  9455. c23,66
  9456. a{****************************************************************************}
  9457. c68,69
  9458. a{****************************************************************************}
  9459. c66,66
  9460. c72,74
  9461. a            macTE: TEHandle;                    { TEHandle of itsTextPane }
  9462. a            origStyleScrap: StScrpHandle;        { original styles on clipboard }
  9463. a            deletedStyles: StScrpHandle;        { styles of original text    }
  9464. a            insertedStyles: StScrpHandle;        { styles of inserted text    }
  9465. c71,71
  9466. c80,101
  9467. a{****************************************************************************}
  9468. c103,104
  9469. a{****************************************************************************}
  9470. c106,126
  9471. a{****************************************************************************}
  9472. c128,129
  9473. a{****************************************************************************}
  9474. c131,143
  9475. e
  9476. o
  9477. rTable classes
  9478. fCArrayPane.p
  9479. x432516406,446917314
  9480. a{****************************************************************************}
  9481. c1,14
  9482. a{****************************************************************************}
  9483. c16,25
  9484. a{****************************************************************************}
  9485. c27,30
  9486. a{****************************************************************************}
  9487. c32,41
  9488. a    { by default, set up the table to have a single column, and to }
  9489. a    { draw cells in column major order.}
  9490. c39,39
  9491. c45,48
  9492. a{****************************************************************************}
  9493. c50,52
  9494. a{****************************************************************************}
  9495. c48,48
  9496. c55,67
  9497. a{****************************************************************************}
  9498. c69,71
  9499. a{****************************************************************************}
  9500. c73,79
  9501. a{****************************************************************************}
  9502. c81,85
  9503. a{****************************************************************************}
  9504. c87,91
  9505. a        Assert(anArray <> NIL);
  9506. c93,114
  9507. a{****************************************************************************}
  9508. c116,118
  9509. a{****************************************************************************}
  9510. c120,125
  9511. a{****************************************************************************}
  9512. c127,129
  9513. a{****************************************************************************}
  9514. c131,140
  9515. a                infoIndex := LongIntPtr(info)^;
  9516. c142,142
  9517. a                    arrayInsertElement:    { new element inserted, add a new row }
  9518. c144,144
  9519. a                    arrayDeleteElement:    { element was deleted, delete its row    }
  9520. c146,146
  9521. a                    arrayMoveElement:    { an element was moved, redraw all     }
  9522. a                                        { elements encompassing its old and    }
  9523. a                                        { new positions                        }
  9524. c150,157
  9525. a                    arrayElementChanged:    { an element was changed, redraw its    }
  9526. a                                            { row                                    }
  9527. c150,150
  9528. c152,153
  9529. c163,174
  9530. a{****************************************************************************}
  9531. c176,180
  9532. a{****************************************************************************}
  9533. c182,191
  9534. e
  9535. fCTable.p
  9536. x338267779,58733727
  9537. a{****************************************************************************}
  9538. c1,14
  9539. a{*****************************************************************************}
  9540. c16,28
  9541. a    MoreTCL, QuickDrawText, FOnts;
  9542. c27,27
  9543. c31,32
  9544. a    kDefaultHIndent = 3;    { default horizontal cell indent    }
  9545. a    kDefaultColWidth = 50;    { default column width                }
  9546. c30,30
  9547. a    kBorderMargin = 1;    { margin of active border}
  9548. a    kBorderPen = 2;    { pen size of active border}
  9549. c32,32
  9550. c32,32
  9551. a{****************************************************************************}
  9552. c41,43
  9553. a{****************************************************************************}
  9554. c45,50
  9555. a    { call superclass's initializer }
  9556. c50,50
  9557. c53,55
  9558. a        SetWantsClicks(TRUE);        { we want to be clicked!        }
  9559. c57,59
  9560. a{****************************************************************************}
  9561. c61,63
  9562. a{****************************************************************************}
  9563. c52,52
  9564. c66,105
  9565. a                    BlockMoveData(@qd.black, @pat, sizeof(Pattern));
  9566. c95,95
  9567. c108,120
  9568. a                    BlockMoveData(@qd.black, @pat, sizeof(Pattern));
  9569. c107,107
  9570. c123,126
  9571. a{****************************************************************************}
  9572. c128,130
  9573. a{****************************************************************************}
  9574. c132,134
  9575. a        info: FontInfo;
  9576. c136,140
  9577. a        { make sure class variables are initialized }
  9578. c142,148
  9579. a                                    { start with no cells }
  9580. c150,151
  9581. a                                    { selection is empty }
  9582. c153,162
  9583. a                                    { default to row major drawing }
  9584. c164,164
  9585. a                                    { don't clip cell drawing to cell rects }
  9586. c166,166
  9587. a                                    { no special flags                }
  9588. c168,172
  9589. a                        { setup the desired text characteristics }
  9590. c174,175
  9591. a                { setup the port and restore the text environment }
  9592. c151,151
  9593. c178,178
  9594. a        GetFontInfo(info);
  9595. a                                    { set the instance variable    }
  9596. a        itsFontInfo := info;
  9597. c154,154
  9598. a        rowHeight := itsFontInfo.ascent + itsFontInfo.descent + itsFontInfo.leading;
  9599. a        { add a pixel extra on the top and bottom of rows, to look nice }
  9600. c185,185
  9601. a        SetPt(indent, kDefaultHIndent, itsFontInfo.ascent + 1);
  9602. c158,158
  9603. c188,193
  9604. a        SetRowBorders(0, srcCopy, qd.black);
  9605. a        SetColBorders(0, srcCopy, qd.black);
  9606. c196,199
  9607. a{****************************************************************************}
  9608. c201,204
  9609. a{****************************************************************************}
  9610. c206,221
  9611. a{****************************************************************************}
  9612. c223,229
  9613. a{****************************************************************************}
  9614. c231,239
  9615. a    { if we are embedded in a scroll pane, then use the default row and column }
  9616. a    { sizes as the scroll step and overlap }
  9617. c242,249
  9618. a{****************************************************************************}
  9619. c251,255
  9620. a{****************************************************************************}
  9621. c257,265
  9622. a{****************************************************************************}
  9623. c267,277
  9624. a{****************************************************************************}
  9625. c279,285
  9626. a{****************************************************************************}
  9627. c287,292
  9628. a{****************************************************************************}
  9629. c294,298
  9630. a        tblTask.ITableDragger(self, modifiers, selectionFlags);
  9631. c300,303
  9632. a{****************************************************************************}
  9633. c305,311
  9634. a{****************************************************************************}
  9635. c313,324
  9636. a                IF (gClicks = 2) THEN    { a double click? }
  9637. c326,330
  9638. a                ELSE    { a single click, make mouse task and pass to TrackMouse }
  9639. c283,283
  9640. c326,326
  9641. c334,348
  9642. a{****************************************************************************}
  9643. c350,352
  9644. a{****************************************************************************}
  9645. c354,359
  9646. a{****************************************************************************}
  9647. c361,367
  9648. a{****************************************************************************}
  9649. c369,378
  9650. a{****************************************************************************}
  9651. c380,386
  9652. a{****************************************************************************}
  9653. c388,394
  9654. a        { points are in window coords, convert to local coords }
  9655. c396,398
  9656. a    { find the cell hit by each point                        }
  9657. c346,346
  9658. c401,403
  9659. a    { before we test the cells for equality, we must make sure that that            }
  9660. a    { both points were in the table in the first place.                            }
  9661. c346,346
  9662. c407,413
  9663. a{****************************************************************************}
  9664. c415,419
  9665. a{****************************************************************************}
  9666. c421,427
  9667. a        { clip afterRows to actual row count, remember row numbers zero-based }
  9668. c372,372
  9669. c430,432
  9670. a        { get the height for the new row. Normally use the height of    }
  9671. a        { afterRow, if it exists. If we are inserting before row 0        }
  9672. a        { use that, otherwise use the default value                    }
  9673. c372,372
  9674. c437,455
  9675. a{****************************************************************************}
  9676. c457,460
  9677. a{****************************************************************************}
  9678. c462,468
  9679. a        { clip afterCols to actual colCount, remember col numbers zero-based }
  9680. c470,472
  9681. a        { get the width for the new column. Normally use the width of    }
  9682. a        { afterCol, if it exists. If we are inserting before column 0    }
  9683. a        { use that, otherwise use the default value                        }
  9684. c403,403
  9685. c477,495
  9686. a{****************************************************************************}
  9687. c497,502
  9688. a{****************************************************************************}
  9689. c504,510
  9690. a        { clip startRow and numRows to actual #rows }
  9691. c436,436
  9692. c513,516
  9693. a        { ensure that cells being deleted are not selected }
  9694. c518,519
  9695. a                startRow := startRow + 1;     { shift to one-based index }
  9696. c453,453
  9697. c522,533
  9698. a{****************************************************************************}
  9699. c535,540
  9700. a{****************************************************************************}
  9701. c542,549
  9702. a        { clip startCol and numCols to actual #cols }
  9703. c472,472
  9704. c552,555
  9705. a        { ensure that cells being deleted are not selected }
  9706. c476,476
  9707. c518,519
  9708. a                startCol := startCol + 1;     { shift to one-based index }
  9709. c493,493
  9710. c562,573
  9711. a{****************************************************************************}
  9712. c575,577
  9713. a{****************************************************************************}
  9714. c579,591
  9715. a{****************************************************************************}
  9716. c593,595
  9717. a{****************************************************************************}
  9718. c597,610
  9719. a{****************************************************************************}
  9720. c612,614
  9721. a{****************************************************************************}
  9722. c616,621
  9723. a{****************************************************************************}
  9724. c623,625
  9725. a{****************************************************************************}
  9726. c627,632
  9727. a{****************************************************************************}
  9728. c634,636
  9729. a{****************************************************************************}
  9730. c638,643
  9731. a{****************************************************************************}
  9732. c645,647
  9733. a{****************************************************************************}
  9734. c649,657
  9735. a{****************************************************************************}
  9736. c659,661
  9737. a{****************************************************************************}
  9738. c663,671
  9739. a{****************************************************************************}
  9740. c673,676
  9741. a{****************************************************************************}
  9742. c678,681
  9743. a        Assert((rowNum >= 0) & (rowNum < tableBounds.bottom));
  9744. c589,589
  9745. a    { itsRows contains the heights of all rows. Need to total the heights    }
  9746. a    { to figure where a row starts. SumRange totals up to and including    }
  9747. a    { the end index, so do not add 1 and therefore find out where the        }
  9748. a    { previous row ends                                                    }
  9749. c589,589
  9750. c689,697
  9751. a{****************************************************************************}
  9752. c699,702
  9753. a{****************************************************************************}
  9754. c704,707
  9755. a        Assert((colNum >= 0) & (colNum < tableBounds.right));
  9756. c709,716
  9757. a{****************************************************************************}
  9758. c718,722
  9759. a{****************************************************************************}
  9760. c724,732
  9761. a    { top left of pixelR may be greater than 0,0 because of topLeftIndent }
  9762. c630,630
  9763. c735,740
  9764. a{ make a default string which is row,col }
  9765. a{****************************************************************************}
  9766. c743,745
  9767. a{****************************************************************************}
  9768. c747,759
  9769. a{****************************************************************************}
  9770. c761,764
  9771. a{****************************************************************************}
  9772. c766,780
  9773. a    { account for topLeftIndent             }
  9774. c669,669
  9775. c783,788
  9776. a    { find bounding cells of redraw rect     }
  9777. c683,683
  9778. c791,799
  9779. a    {  if the selection is rectangular, we can optimize by    }
  9780. a    {    hiliting cells in one fell swoop. Otherwise we        }
  9781. a    {    resort to hiliting one cell at a time.                 }
  9782. c683,683
  9783. a        reallyActive := self.IsActive;
  9784. c805,833
  9785. a{****************************************************************************}
  9786. c835,839
  9787. a{****************************************************************************}
  9788. c841,878
  9789. a{****************************************************************************}
  9790. c880,884
  9791. a{****************************************************************************}
  9792. c886,922
  9793. a{****************************************************************************}
  9794. c924,930
  9795. a{****************************************************************************}
  9796. c932,947
  9797. a{****************************************************************************}
  9798. c949,953
  9799. a{****************************************************************************}
  9800. c955,963
  9801. a        { get the pixels spanning the cells    }
  9802. c844,844
  9803. c966,968
  9804. a            { invert with user's hilite color        }
  9805. c970,976
  9806. a{****************************************************************************}
  9807. c978,981
  9808. a{****************************************************************************}
  9809. c983,996
  9810. a    { borders are drawn on the tops of rows and left of columns    }
  9811. a    { but we don't want to border row or column zero                }
  9812. c865,865
  9813. c1000,1004
  9814. a    { draw column borders             }
  9815. c876,876
  9816. c1007,1022
  9817. a    { draw row borders             }
  9818. c899,899
  9819. c1025,1043
  9820. a{****************************************************************************}
  9821. c1045,1048
  9822. a{****************************************************************************}
  9823. c1050,1061
  9824. a{****************************************************************************}
  9825. c1063,1065
  9826. a{****************************************************************************}
  9827. c1067,1079
  9828. a{****************************************************************************}
  9829. c1081,1083
  9830. a{****************************************************************************}
  9831. c1085,1088
  9832. a    { Check if theCell is in table bounds. Note that this    }
  9833. a    {    also handles case of empty table                     }
  9834. c947,947
  9835. c1092,1103
  9836. a{****************************************************************************}
  9837. c1105,1107
  9838. a{****************************************************************************}
  9839. c1109,1126
  9840. a{****************************************************************************}
  9841. c1128,1130
  9842. a{****************************************************************************}
  9843. c1132,1149
  9844. a{****************************************************************************}
  9845. c1151,1155
  9846. a{****************************************************************************}
  9847. c1157,1175
  9848. a{****************************************************************************}
  9849. c1177,1182
  9850. a{****************************************************************************}
  9851. c1184,1207
  9852. a{****************************************************************************}
  9853. c1209,1213
  9854. a{****************************************************************************}
  9855. c1215,1222
  9856. a{****************************************************************************}
  9857. c1224,1227
  9858. a{****************************************************************************}
  9859. c1229,1236
  9860. a{****************************************************************************}
  9861. c1238,1240
  9862. a{****************************************************************************}
  9863. c1242,1252
  9864. a{****************************************************************************}
  9865. c1254,1259
  9866. a{****************************************************************************}
  9867. c1261,1273
  9868. a    { first clip selRect to intersection with tableBounds }
  9869. c1122,1122
  9870. c1122,1122
  9871. c1277,1279
  9872. a        { cNewSelection holds the cells to be selected                    }
  9873. c1122,1122
  9874. c1282,1283
  9875. a        { Only clear the old selection if it has been requested        }
  9876. a        { and is non-empty                                                }
  9877. c1122,1122
  9878. c1287,1289
  9879. a            { Determine the region of cells that will be newly selected    }
  9880. a            { not simply deselected and reselected                        }
  9881. c1126,1126
  9882. c1293,1294
  9883. a            { deselect the deselection                                    }
  9884. c1145,1145
  9885. c1297,1302
  9886. a        { determine the cells that will actually be deselected        }
  9887. c1145,1145
  9888. c1305,1306
  9889. a        { Before updating itsSelection, copy it so we know what cells    }
  9890. a        { are currently hilited (if redrawing otherwise we don't care)    }
  9891. c1145,1145
  9892. c1310,1311
  9893. a        { union the old selection with the new selection                }
  9894. c1145,1145
  9895. c1314,1318
  9896. a            { attempt to make cDeselection and cNewSelection rectangular }
  9897. a            { so we can hilite them efficiently                          }
  9898. c1147,1147
  9899. c1322,1326
  9900. a                    { Try unioning cDeselection and itsSelection. To         }
  9901. a                    { compensate, we would have to    then union itsSelection }
  9902. a                    { with cNewSelection. If cNewSelection is already         }
  9903. a                    { rectangular, we don't even attempt it, because we     }
  9904. a                    { may be optimizing deselection while simultaneously     }
  9905. a                    { screwing up selection                                }
  9906. c1173,1173
  9907. c1334,1339
  9908. a                        { cCurrHilite was rectangular. Now that we have unioned    }
  9909. a                        { it with cNewSelection, we must either unhilite            }
  9910. a                        { cCurrHilite before hiliting cNewSelection, or even        }
  9911. a                        { better, simply clip it out.                                }
  9912. c1173,1173
  9913. c1345,1361
  9914. a                                                        DiffRgn(qd.thePort^.clipRgn, gUtilRgn, qd.thePort^.clipRgn);
  9915. c1363,1373
  9916. a                    BEGIN    { just invalidate }
  9917. c1205,1205
  9918. c1376,1389
  9919. a{****************************************************************************}
  9920. c1391,1396
  9921. a{****************************************************************************}
  9922. c1398,1427
  9923. a{****************************************************************************}
  9924. c1429,1431
  9925. a{****************************************************************************}
  9926. c1433,1441
  9927. a    { DeselectRect will validate the input, no reason to do it twice }
  9928. c1252,1252
  9929. c1444,1447
  9930. a{****************************************************************************}
  9931. c1449,1451
  9932. a{****************************************************************************}
  9933. c1453,1462
  9934. a    { first clip selectRect to intersection with tableBounds }
  9935. c1273,1273
  9936. c1465,1468
  9937. a        { only deselect cells that were actually selected }
  9938. c1275,1275
  9939. c1471,1479
  9940. a                    { we need to unhilite a rectangular area,  }
  9941. a                    { don't necessarily need to redraw         }
  9942. c1482,1502
  9943. a{****************************************************************************}
  9944. c1504,1507
  9945. a{****************************************************************************}
  9946. c1509,1517
  9947. a{****************************************************************************}
  9948. c1519,1524
  9949. a{****************************************************************************}
  9950. c1526,1532
  9951. a{****************************************************************************}
  9952. c1534,1536
  9953. a{****************************************************************************}
  9954. c1538,1544
  9955. a{****************************************************************************}
  9956. c1546,1558
  9957. a{****************************************************************************}
  9958. c1560,1584
  9959. a                            BEGIN    { no more cells }
  9960. c1586,1589
  9961. a                            BEGIN    { don't want next row }
  9962. c1586,1587
  9963. c1593,1596
  9964. a                                newCell.h := 0;    { beginning of next row }
  9965. a                                newCell.v := newCell.v + 1;    { we know its not the last row }
  9966. c1425,1425
  9967. c1422,1422
  9968. c1425,1425
  9969. c1602,1603
  9970. a                ELSE        { next cell in row }
  9971. c1605,1607
  9972. a        ELSE IF (vNext) THEN    { hNext was false }
  9973. c1405,1405
  9974. c1610,1610
  9975. a                    BEGIN    { no more rows }
  9976. c1612,1616
  9977. a                    newCell.v := newCell.v + 1;    { next cell in column }
  9978. c1424,1424
  9979. c1619,1624
  9980. a{****************************************************************************}
  9981. c1626,1634
  9982. a{****************************************************************************}
  9983. c1636,1676
  9984. a{****************************************************************************}
  9985. c1678,1681
  9986. a{****************************************************************************}
  9987. c1683,1693
  9988. a        IF (EmptyRect(selRect) | EmptyLongRect(aperture)) THEN    { nothing selected or nothing visible}
  9989. c1695,1696
  9990. a    { bottom right actual cell of rect }
  9991. c1500,1500
  9992. c1699,1702
  9993. a        selPos := position;            { init to current scroll position }
  9994. c1500,1500
  9995. a    { get pixels of topLeft and botRight cells of the selection }
  9996. c1500,1500
  9997. c1707,1709
  9998. a    {    Note that the we always ensure that the full top left or    }
  9999. a    {    bottom right cell is in view. For example, if there is 1 selected    }
  10000. a    {    cell, located in the top left of the frame such that only    }
  10001. a    {    the rightmost edge of the cell is visible, we will scroll    }
  10002. a    {    the cell completely into view.                                }
  10003. c1500,1500
  10004. a    {*** calc vertical scroll ***}
  10005. c1500,1500
  10006. a        { Is the top of selection below the bottom of frame? }
  10007. c1500,1500
  10008. c1500,1500
  10009. c1721,1725
  10010. a        { Is the bottom of selection above the top of the frame? }
  10011. c1500,1500
  10012. c1728,1732
  10013. a    {*** calc horizontal scroll ***}
  10014. c1515,1515
  10015. a        { Is the left edge of selection past the right edge of frame? }
  10016. c1515,1515
  10017. c1737,1741
  10018. a        { Is the right edge of selection before the left edge of frame? }
  10019. c1515,1515
  10020. c1744,1752
  10021. a{****************************************************************************}
  10022. c1754,1756
  10023. a{****************************************************************************}
  10024. c1758,1763
  10025. a{****************************************************************************}
  10026. c1765,1767
  10027. a{****************************************************************************}
  10028. c1769,1773
  10029. a{****************************************************************************}
  10030. c1775,1779
  10031. a{****************************************************************************}
  10032. c1781,1782
  10033. a                            VAR macEvent: EventRecord);
  10034. c1562,1562
  10035. c1785,1809
  10036. a    { if no selection, put selection at 0,0 }
  10037. c1574,1574
  10038. c1645,1645
  10039. c1813,1815
  10040. a                                                { OK, its a rect, check for }
  10041. a                                                { single selected cell }
  10042. c1818,1830
  10043. a                                                { moving to a real cell? }
  10044. c1594,1594
  10045. c1833,1840
  10046. a{****************************************************************************}
  10047. c1842,1844
  10048. a{****************************************************************************}
  10049. c1846,1847
  10050. a                            VAR macEvent: EventRecord);
  10051. c1644,1644
  10052. c1850,1853
  10053. a{****************************************************************************}
  10054. c1855,1857
  10055. a{****************************************************************************}
  10056. c1859,1874
  10057. a{****************************************************************************}
  10058. c1876,1878
  10059. a{****************************************************************************}
  10060. c1880,1887
  10061. a{****************************************************************************}
  10062. c1889,1892
  10063. a{****************************************************************************}
  10064. c1894,1903
  10065. a{****************************************************************************}
  10066. c1905,1908
  10067. a{****************************************************************************}
  10068. c1910,1919
  10069. a{****************************************************************************}
  10070. c1921,1923
  10071. a{****************************************************************************}
  10072. c1925,1930
  10073. a{****************************************************************************}
  10074. c1932,1940
  10075. a{****************************************************************************}
  10076. c1942,1973
  10077. a{****************************************************************************}
  10078. c1975,1976
  10079. a{****************************************************************************}
  10080. c1719,1719
  10081. c1979,1983
  10082. a                HiliteCellRegion(itsSelection, TRUE);
  10083. c1731,1732
  10084. c1987,1989
  10085. a{****************************************************************************}
  10086. c1991,1992
  10087. a{****************************************************************************}
  10088. c1732,1732
  10089. c1995,1999
  10090. a                HiliteCellRegion(itsSelection, FALSE);
  10091. c1747,1747
  10092. c1741,1741
  10093. c2003,2006
  10094. a{****************************************************************************}
  10095. c2008,2010
  10096. a{****************************************************************************}
  10097. c2012,2022
  10098. a    {***** calc vertical strips *****}
  10099. c1761,1761
  10100. c2025,2028
  10101. a        { find the column at right end of strip        }
  10102. c1763,1763
  10103. c2031,2035
  10104. a        { if column fits completely, break the strip after    }
  10105. a        { the column, otherwise break it before the colum    }
  10106. c1773,1773
  10107. c2039,2050
  10108. a    {***** calc horizontal strips *****}
  10109. c1792,1792
  10110. c2025,2028
  10111. a        { find the row at bottom end of strip        }
  10112. c1792,1792
  10113. c2059,2075
  10114. a{****************************************************************************}
  10115. c2077,2079
  10116. a{****************************************************************************}
  10117. c2081,2098
  10118. e
  10119. fCTableDragger.p
  10120. x58113765,441452509
  10121. a{****************************************************************************}
  10122. c1,14
  10123. a{****************************************************************************}
  10124. c16,24
  10125. a{****************************************************************************}
  10126. c26,33
  10127. a{****************************************************************************}
  10128. c35,44
  10129. a    { fUseSense determines whether a cell is selected or deselected}
  10130. a    { as the mouse moves over it. Normally it is always selected,}
  10131. a    { but if the command key is down, we use the state of the first}
  10132. a    { cell and apply it to subsequent cells. Works like fatbits.}
  10133. c44,44
  10134. c50,51
  10135. a    { fSelectsRects determines whether dragging selects individual}
  10136. a    { cells or drags out rectangles. fSelectFlags is set TRUE if}
  10137. a    { fUseSense is FALSE, the selOnlyOne selection flag is off,}
  10138. a    { and either the selDragRects flag is on or the shift key}
  10139. a    { was help down.}
  10140. c44,44
  10141. c58,59
  10142. a    { fExtend determines whether new selections are added to }
  10143. a    { or replace the previous selection. They are added if fExtend}
  10144. a    { is TRUE. It is set TRUE if the selOnlyOne flag is off, and either}
  10145. a    { fUseSense is TRUE, fSelectsRects is TRUE and the shift key is down,}
  10146. a    { or the selExtendDrag flag is on.}
  10147. c49,49
  10148. c66,69
  10149. a{****************************************************************************}
  10150. c71,74
  10151. a{****************************************************************************}
  10152. c57,57
  10153. c77,78
  10154. a        IF itsTable.itsLastTask = self THEN
  10155. c80,84
  10156. a{****************************************************************************}
  10157. c86,89
  10158. a{****************************************************************************}
  10159. c91,113
  10160. a{****************************************************************************}
  10161. c115,121
  10162. a{****************************************************************************}
  10163. c123,132
  10164. a    { if no disjoint selections are allowed, then the first    }
  10165. a    { click always deselects everything                        }
  10166. c113,113
  10167. c136,137
  10168. a    { If fSelectsRects is true soley because selDragsRects is    }
  10169. a    { true but the shift key wasn't down, then we should not    }
  10170. a    { select a rectangle initially                                }
  10171. c113,113
  10172. c142,162
  10173. a{****************************************************************************}
  10174. c164,167
  10175. a{****************************************************************************}
  10176. c169,203
  10177. e
  10178. fTCL_Tables.p
  10179. x413479659,226034495
  10180. c0,0
  10181. a{****************************************************************************}
  10182. c2,10
  10183. a{****************************************************************************}
  10184. c12,17
  10185. a    TCL, Lists;
  10186. c16,16
  10187. c19,19
  10188. a{****************************************************************************}
  10189. c22,23
  10190. a{****************************************************************************}
  10191. c20,20
  10192. c26,27
  10193. a    { CTable can draw in row major or column major order }
  10194. c25,25
  10195. a    tTblDrawOrder = (tblRow, tblCol);
  10196. c25,25
  10197. c32,40
  10198. a            tableBounds: Rect;            { defines table size in cells            }
  10199. a            topLeftIndent: Point;        { top and left indent of entire table    }
  10200. a            itsSelection: RgnHandle;    { maintains the selection                }
  10201. a            itsRows: CRunArray;            { runs of row heights                    }
  10202. a            itsCols: CRunArray;            { runs of column widths                }
  10203. a            drawOrder: tTblDrawOrder;    { defines CTable draws in row or column order }
  10204. a            defRowHeight: Integer;        { default size of new rows and cols     }
  10205. c48,48
  10206. a            selectionFlags: Longint;    { flags for selection behavior            }
  10207. a            itsFontInfo: FontInfo;            { for text tables                        }
  10208. a            indent: Point;                { used by subclasses for cell drawing    }
  10209. a            dblClickCmd: Longint;        { command sent for cell double click    }
  10210. c53,72
  10211. a        { change size }
  10212. c58,58
  10213. c75,81
  10214. a        { query }
  10215. c72,72
  10216. c84,106
  10217. a        { clicks }
  10218. c106,106
  10219. c109,140
  10220. a        { typing }
  10221. c122,122
  10222. c143,144
  10223. a                                VAR macEvent: EventRecord);
  10224. c124,124
  10225. c147,148
  10226. a                                VAR macEvent: EventRecord);
  10227. c134,135
  10228. a        { commands }
  10229. c135,135
  10230. c154,160
  10231. a        { selecting }
  10232. c140,140
  10233. c163,176
  10234. a        { disposal }
  10235. c151,151
  10236. c179,189
  10237. a        { Drawing }
  10238. c176,176
  10239. c192,207
  10240. a        { text tables only }
  10241. c181,181
  10242. c210,233
  10243. aVAR        { class variables used to calc cell selections }
  10244. c207,207
  10245. c236,239
  10246. a    { selection flags }
  10247. c214,214
  10248. a    selOnlyOne = 1;            { only one cell can be selected at a time    }
  10249. a    selNoDisjoint = 2;        { no disjoint selections allowed            }
  10250. a    selExtendDrag = 4;        { extend selections by selecting hit cells    }
  10251. a                            { not by extending rectangles                }
  10252. a    selDragRects = 8;        { dragging always selects rectangles        }
  10253. c214,214
  10254. a    { synonyms for some Boolean parameters}
  10255. c214,214
  10256. c250,255
  10257. a    { Change protocol for CTable - info parameter is NIL    }
  10258. c231,231
  10259. c258,262
  10260. a    { utility to set a cell }
  10261. c231,231
  10262. c265,268
  10263. a{****************************************************************************}
  10264. c270,271
  10265. a{****************************************************************************}
  10266. c233,233
  10267. c274,276
  10268. a        itsTable: CTable;            { client table}
  10269. a        anchorCell: Cell;            { initially clicked cell}
  10270. a        prevCell: Cell;                { last hit Cell }
  10271. a        selectionFlags: Longint;    { local copy of table's flags }
  10272. a        modifierKeys: Integer;        { modifier keys from the mousedown event}
  10273. a        fExtend: Boolean;            { TRUE if selections are extended}
  10274. a        fSelectRects: Boolean;        { TRUE if dragging always selects rects}
  10275. a        fUseSense: Boolean;            { TRUE if use sense of first cell, like fatbits}
  10276. a        fFirstWasSelected: Boolean; { TRUE if first cell was selected}
  10277. c237,237
  10278. c287,299
  10279. a{****************************************************************************}
  10280. c301,302
  10281. a{****************************************************************************}
  10282. c252,252
  10283. c255,255
  10284. c274,274
  10285. c307,308
  10286. a        itsArray: CArray;        { array being displayed                        }
  10287. a        ownsArray: Boolean;    { TRUE if Free should dispose of itsArray        }
  10288. c257,257
  10289. c312,344
  10290. e
  10291. o
  10292. rTCL 1.1 Doc
  10293. dOOP page 313
  10294. fREAD ME
  10295. x279914242,231837266
  10296. c0,2
  10297. aJuly 23, 1991
  10298. c4,14
  10299. c18,76
  10300. c81,99
  10301. e
  10302. fUsing Dialogs
  10303. i
  10304. fUsing Pop-up Menus
  10305. i
  10306. fUsing Tables
  10307. i
  10308. z4454,READ ME 1.1.2
  10309. “READ ME” for the THINK Class Library 
  10310. ===================================
  10311. Copyright © 1991 Symantec Corporation. All rights reserved.
  10312. October 2, 1991
  10313. Font: Geneva 12
  10314.  
  10315. INTRODUCTION
  10316. ==============
  10317. This document describes some changes to and features of the THINK Class
  10318. Library that weren’t included in the  the “Object-Oriented Programming” 
  10319. The first section, “Extra Classes,” tells you where to find out about some
  10320. classes that aren’t described in the manual. The second section, “Last
  10321. Minute Changes,” describes some changes to the THINK Class Library that
  10322. were made after the manual went to press. 
  10323.  
  10324. Your THINK C package includes the THINK Class Library 1.1.1. This is a 
  10325. minor update to the THINK Class Library 1.1 that fixes some bugs.
  10326.  
  10327. EXTRA CLASSES
  10328. ===============
  10329. The THINK Class Library 1.1 has three groups of classes that aren’t in
  10330. the “Object-Oriented Programming” manual. Files in the “TCL 1.1 doc”
  10331. folder describe how to use them:
  10332.  
  10333.       •  Dialogs — These classes add support for modal and modeless 
  10334.           dialogs. You can also use these classes to create document 
  10335.           windows that look like forms. They’re described in the document
  10336.           “Using Dialogs.”
  10337.       •  Tables — These classes let you display data in a scrolling list
  10338.           or a table, like a spreadsheet. They’re described in the
  10339.           document “Using Tables.”
  10340.       •  Pop-up Menus — These classes implement pop-up menus that
  10341.           follow Apple’s latest guidelines. They’re described in the 
  10342.           document “Using Pop-up Menus.”
  10343.  
  10344. LAST MINUTE CHANGES
  10345. =====================
  10346. Here are some last-minute changes that aren’t it into the “Object-
  10347. Oriented Programming” manual. They are split into three sections: 
  10348.       •  Both THINK C and Pascal
  10349.       •  THINK C
  10350.       •  THINK Pascal.
  10351.  
  10352. Both THINK C and Pascal
  10353. ----------------------
  10354. •  The following classes override some methods that are not documented
  10355.     in the Object-Oriented Programming Manual:
  10356.       CControl -  RefreshLongRect
  10357.       CDirector - RemoveDirector
  10358.       CCluster - Copy
  10359.       CRunArray - Copy
  10360.       CTextStyleTask - Dispose
  10361.     See the implementations of these methods for more information.
  10362.  
  10363. •  CPane has an additional instance variable, itsLastTask. See the
  10364.    declaration of CPane for more information.
  10365.  
  10366. •  If you hook ExitToShell or use the _atexit function in THINK C, you must 
  10367.     do so before you send your application the IApplication message. If you 
  10368.     don’t, your function will not execute on exit.
  10369.  
  10370. •  CControl and CScrollBar respect the visible flag in the CNTL resource. 
  10371.     Make sure you set the flag appropriately in your resource files, especially
  10372.     for the CNTL resource. In the THINK Class Library 1.0, its visible flag
  10373.     was set to FALSE.
  10374.  
  10375. •  When you update an application from the THINK Class Library 1.0 to 1.1,
  10376.     make sure you copy all the new resources from the “TCL Resources”
  10377.     file.
  10378.  
  10379. •  If you’re running under System 7.0 and use the CFWDesktop class, 
  10380.     you cannot step through Standard File dialog filters. Your application 
  10381.     may crash. You can use Standard File dialog filters, but do not try to step 
  10382.     through them.
  10383.  
  10384. THINK C
  10385. --------
  10386. •  Page 313 of the Object-Oriented Programming manual is a misprint. It’s 
  10387.     a duplicate of page 321. A copy of the correct page 313 is in the same
  10388.     folder as this file.
  10389.     
  10390. •  The macro __cn defined in oops.h returns the name of the class an object
  10391.     belongs to. It’s particularly useful in the THINK C debugger. 
  10392.  
  10393. THINK Pascal
  10394. ------------
  10395. •  The “TCL Resources” file and the resource files for all the demos 
  10396.     contain a SIZE -1 resource. This resource contains the information 
  10397.     needed to run an application under MultiFinder or System 7.0. Without
  10398.     this resource, applications won’t receive AppleEvents under System 7.0.
  10399.  
  10400. •  When you launch an application under System 7.0, the System sends the 
  10401.     application an 'oapp' AppleEvent, and the application usually responds by 
  10402.     opening a blank document. However, when you run an application under 
  10403.     THINK Pascal, the application doesn’t receive that event. The THINK Class 
  10404.     Library tries to simulate this event. If the compiler variable TCL_DEBUG 
  10405.     is TRUE, the THINK Class Library sends your application a DoCommand 
  10406.     message with the command cmdNew. TCL_DEBUG is set to TRUE in all the 
  10407.     demo projects that aren’t used for building applications (that is, all demo 
  10408.     projects that do NOT end in .Build.π).o
  10409. rTCL Libs
  10410. fEqualMem.c
  10411. i
  10412. fExceptions.c
  10413. i
  10414. fExceptions.h
  10415. i
  10416. fLoadSeg_Patch.c
  10417. i
  10418. fLongQD.p
  10419. x85569859,236596683
  10420. a{****************************************************************************}
  10421. c1,18
  10422. a{****************************************************************************}
  10423. c20,72
  10424. a        Assert(cPreparedView <> NIL);
  10425. a        Assert(member(cPreparedView, CPane));
  10426. c75,80
  10427. a        Assert(cPreparedView <> NIL);
  10428. a        Assert(member(cPreparedView, CPane));
  10429. c83,266
  10430. e
  10431. z166,cw_EqualMem.c
  10432. #include <string.h>
  10433.  
  10434.  pascal Boolean    EqualMem( void *p1, void *p2, long n);
  10435.  pascal Boolean    EqualMem( void *p1, void *p2, long n)
  10436.  {
  10437.      return memcmp(p1,p2,n) == 0;
  10438.  }z7438,cw_exceptions.c
  10439. enum                                     // for handlerType field of FailInfo
  10440.     kCatchException, 
  10441.     kTry, 
  10442.     kCatchFailure
  10443. }; 
  10444.  
  10445. typedef pascal void (*HandlerFuncPtr)(short err, long msg);
  10446.  
  10447. #if defined(__POWERPC__)
  10448.  
  10449. typedef struct {
  10450.     long        cr;                // == condition register
  10451.     long        lr;                // == link register
  10452.     long        sp;                // == stack pointer
  10453.     long        regs[19];        // == 19 longs
  10454.     double        fp14;            // saved FP14-FP31
  10455.     double        fp15;
  10456.     double        fp16;
  10457.     double        fp17;
  10458.     double        fp18;
  10459.     double        fp19;
  10460.     double        fp20;
  10461.     double        fp21;
  10462.     double        fp22;
  10463.     double        fp23;
  10464.     double        fp24;
  10465.     double        fp25;
  10466.     double        fp26;
  10467.     double        fp27;
  10468.     double        fp28;
  10469.     double        fp29;
  10470.     double        fp30;
  10471.     double        fp31;
  10472.     double        fpscr;            // saved FPSCR
  10473. } thisjmp_buf;
  10474.  
  10475. #elif defined(__MC68K__)
  10476.  
  10477. typedef struct {
  10478.         long    regs[13];
  10479.         } thisjmp_buf;
  10480.  
  10481. #else
  10482. #error
  10483. #endif
  10484.  
  10485. typedef struct FailInfo {
  10486.     long            A6Link;
  10487.     char            handlerType;
  10488.     char            fPropagate;
  10489.     short            pad;            // force word alignment for regs.
  10490.     HandlerFuncPtr    handlerProc;
  10491.     struct FailInfo    *next;
  10492.     thisjmp_buf        regs;
  10493. } FailInfo;
  10494.  
  10495. pascal char gDefaultPropagation = TRUE;
  10496.  
  10497. extern pascal short        gLastError;        /* last error code that caused a failure  */
  10498. extern pascal long        gLastMessage;    /* last message associated with a failure */
  10499.  
  10500. extern pascal void Failure(short e, long m);
  10501.  
  10502. extern pascal FailInfo    *gTopHandler;
  10503.  
  10504. pascal void ThrowHandler(FailInfo *fi);
  10505. pascal void NoHandler(void);
  10506. pascal short CatchException(FailInfo *fi);
  10507.  
  10508. #if __MC68K__
  10509. extern pascal void MyFailure(short e, long m, HandlerFuncPtr proc, long A6);
  10510. pascal void CatchFailures(FailInfo *fi, HandlerFuncPtr Handler, long A6);
  10511.  
  10512. asm pascal void ThrowHandler(FailInfo *fi)
  10513. {
  10514.         addq    #4,a7
  10515.         move.l    (a7)+,a0
  10516.         bne        cont
  10517.         jsr        NoHandler            // No handler
  10518.  
  10519. cont:    clr        d0
  10520.         move.b    struct(FailInfo.handlerType)(a0),d0
  10521.         add        d0,d0
  10522.         add        dtable(d0),d0
  10523.         jmp        dtable(d0)
  10524.  
  10525. dtable:    dc.w    catchex
  10526.         dc.w    try
  10527.         dc.w    catchfail
  10528.  
  10529. catchex:
  10530.         movem.l    struct(FailInfo.regs)(a0),d3-d7/a1-a4/a6-a7    
  10531.         move    gLastError, (sp)
  10532.         jmp        (a1)
  10533.  
  10534. try:
  10535.         movem.l    struct(FailInfo.regs)(a0),d3-d7/a1-a4/a6-a7    
  10536.         move    gLastError, d0
  10537.         ext.l    d0
  10538.         jmp        (a1)
  10539.  
  10540. catchfail:
  10541.         movem.l    struct(FailInfo.regs)(a0),d3-d7/a1-a4/a6-a7    
  10542.  
  10543.         tst.w    gLastError
  10544.         beq        end
  10545.                         
  10546.         move.w  gLastError, -(sp)
  10547.         move.l  gLastMessage, -(sp)
  10548.         move.l    struct(FailInfo.handlerProc)(a0), -(sp)
  10549.         move.l    struct(FailInfo.A6Link)(a0), -(sp)
  10550.         jsr        MyFailure            // defined failure handler
  10551.  
  10552.         move.w  gLastError, -(sp)
  10553.         move.l  gLastMessage, -(sp)
  10554.         jsr        Failure                // cascade down the chain
  10555.  
  10556. end:    jmp        (a1)                // last error
  10557.  
  10558.         rts                            // never comes here
  10559. }
  10560.  
  10561. asm pascal short CatchException(FailInfo *fi)
  10562. {
  10563.         movea.l        (a7)+,a1
  10564.         movea.l        (a7)+,a0
  10565.         movem.l        d3-d7/a1-a4/a6/a7,struct(FailInfo.regs)(a0)
  10566.         clr.l        struct(FailInfo.A6Link)(a0)
  10567.         clr.l        struct(FailInfo.handlerProc)(a0)
  10568.         move.b        #1,struct(FailInfo.fPropagate)(a0)
  10569.         clr.b        struct(FailInfo.handlerType)(a0)
  10570.         move.l        gTopHandler,struct(FailInfo.next)(a0)
  10571.         move.l        a0,gTopHandler
  10572.         clr.w        (a7)
  10573.         jmp            (a1)
  10574. }
  10575.  
  10576. asm pascal void CatchFailures(FailInfo *fi, HandlerFuncPtr Handler, long A6)
  10577. {
  10578.         movea.l        (a7)+,a1                // return address, used in last resort by handler
  10579.         move.l        (a7)+,d0
  10580.         move.l        (a7)+,d1
  10581.         movea.l        (a7)+,a0
  10582.         movem.l        d3-d7/a1-a4/a6/a7,struct(FailInfo.regs)(a0)
  10583.         move.l        d0,struct(FailInfo.A6Link)(a0)
  10584.         move.l        d1,struct(FailInfo.handlerProc)(a0)
  10585.         move.b        #1,struct(FailInfo.fPropagate)(a0)
  10586.         move.b        #2,struct(FailInfo.handlerType)(a0)
  10587.         move.l        gTopHandler,struct(FailInfo.next)(a0)
  10588.         move.l        a0,gTopHandler
  10589.         jmp           (a1)
  10590. }
  10591.  
  10592. #else
  10593.  
  10594. extern pascal void MyFailure(short e, long m, HandlerFuncPtr proc);
  10595. pascal void CatchFailures(FailInfo *fi, HandlerFuncPtr Handler);
  10596.  
  10597. asm pascal void ThrowHandler(register FailInfo *fi)
  10598. {
  10599.  
  10600.     cmplwi    r3,0                // if (fi == 0L) NoHandler();
  10601.     bne        cont
  10602.     bl        NoHandler
  10603.  
  10604. cont:
  10605.     lwz        r4,gLastError(RTOC)    // load gLastError's TOC pointer
  10606.  
  10607.     // Restoration is the same for all kinds.
  10608.  
  10609.     lwz        r5,  fi->regs.cr        //    restore CR
  10610.     lwz        r0,  fi->regs.lr        //    restore LR
  10611.     lwz        sp,  fi->regs.sp        //    restore SP
  10612.     lmw        r13, fi->regs.regs        //    restore GP regs
  10613.     mtcrf    255, r5
  10614.     mtctr    r0
  10615.     lfd        fp14,fi->regs.fp14        //    restore FP regs
  10616.     lfd        fp15,fi->regs.fp15
  10617.     lfd        fp16,fi->regs.fp16
  10618.     lfd        fp17,fi->regs.fp17
  10619.     lfd        fp18,fi->regs.fp18
  10620.     lfd        fp19,fi->regs.fp19
  10621.     lfd        fp20,fi->regs.fp20
  10622.     lfd        fp21,fi->regs.fp21
  10623.     lfd        fp22,fi->regs.fp22
  10624.     lfd        fp23,fi->regs.fp23
  10625.     lfd        fp24,fi->regs.fp24
  10626.     lfd        fp25,fi->regs.fp25
  10627.     lfd        fp26,fi->regs.fp26
  10628.     lfd        fp27,fi->regs.fp27
  10629.     lfd        fp28,fi->regs.fp28
  10630.     lfd        fp29,fi->regs.fp29
  10631.     lfd        fp30,fi->regs.fp30
  10632.     lfd        fp0, fi->regs.fpscr
  10633.     lfd        fp31,fi->regs.fp31
  10634.     mtfsf    255,fp0
  10635.  
  10636.  
  10637.     lbz        r5,fi->handlerType        // which kind ?
  10638.     extsb    r5,r5
  10639.     cmpwi    r5,2
  10640.     beq        catchfail
  10641.  
  10642.     // try and catchexceptions are handled the same way on PPC.
  10643.     lhz        r3,0(r4)
  10644.     beqctr
  10645.  
  10646. catchfail:
  10647.  
  10648.     lhz        r6,0(r4)                // test gLastError
  10649.     cmpwi    r6,0
  10650.     beqctr
  10651.  
  10652.     lwz        r5,gLastMessage(RTOC)
  10653.     lwz        r3,fi->handlerProc
  10654.  
  10655.     lwz        r4,0(r5)                // gLastMessage
  10656.     mr        r5,r3                    // handler's TVec
  10657.     mr        r3,r6                    // gLastError
  10658.     
  10659.     bl        MyFailure
  10660.  
  10661.     lwz        r3,gLastError(RTOC)
  10662.     lwz        r5,gLastMessage(RTOC)
  10663.     lhz        r3,0(r3)
  10664.     lwz        r4,0(r5)
  10665.     bl        Failure
  10666. }
  10667.  
  10668. asm pascal short CatchException(register FailInfo *fi)
  10669. {
  10670.     mfcr    r5
  10671.     mflr    r6
  10672.     stw        sp,  fi->regs.sp            //    save SP
  10673.     stw        r5,  fi->regs.cr            //    save CR
  10674.     stw        r6,  fi->regs.lr            //    save LR
  10675.     stmw    r13, fi->regs.regs            //    save GP regs
  10676.     mffs    fp0
  10677.     stfd    fp14,fi->regs.fp14            //    save FP regs
  10678.     stfd    fp14,fi->regs.fp14            //    save FP14-FP31
  10679.     stfd    fp15,fi->regs.fp15
  10680.     stfd    fp16,fi->regs.fp16
  10681.     stfd    fp17,fi->regs.fp17
  10682.     stfd    fp18,fi->regs.fp18
  10683.     stfd    fp19,fi->regs.fp19
  10684.     stfd    fp20,fi->regs.fp20
  10685.     stfd    fp21,fi->regs.fp21
  10686.     stfd    fp22,fi->regs.fp22
  10687.     stfd    fp23,fi->regs.fp23
  10688.     stfd    fp24,fi->regs.fp24
  10689.     stfd    fp25,fi->regs.fp25
  10690.     stfd    fp26,fi->regs.fp26
  10691.     stfd    fp27,fi->regs.fp27
  10692.     stfd    fp28,fi->regs.fp28
  10693.     stfd    fp29,fi->regs.fp29
  10694.     stfd    fp30,fi->regs.fp30
  10695.     stfd    fp31,fi->regs.fp31
  10696.     stfd    fp0, fi->regs.fpscr            //    save FPSCR
  10697.  
  10698.     li        r7,0
  10699.     lwz        r4,gTopHandler(RTOC)
  10700.     lwz        r5,gDefaultPropagation(RTOC)
  10701.     stw        r7,fi->A6Link                // fi->A6Link = 0;
  10702.     stw        r7,fi->handlerProc            // fi->handlerProc = 0L;
  10703.     lbz        r5,0(r5)
  10704.     stb        r7,fi->handlerType            // fi->handlerType = kCatchFailure;
  10705.     stb        r5,fi->fPropagate            // fi->fPropagate = gDefaultPropagation;
  10706.     stw        r4,fi->next                    // fi->next = gTopHandler;
  10707.     stw        r3,0(r4)                    // gTopHandler = fi;
  10708.  
  10709.     li        r3,0
  10710.     blr
  10711. }
  10712.  
  10713. asm pascal void CatchFailures(register FailInfo *fi, HandlerFuncPtr Handler)
  10714. {
  10715.     mfcr    r5
  10716.     mflr    r6
  10717.     stw        sp,  fi->regs.sp            //    save SP
  10718.     stw        r5,  fi->regs.cr            //    save CR
  10719.     stw        r6,  fi->regs.lr            //    save LR
  10720.     stmw    r13, fi->regs.regs            //    save GP regs
  10721.     mffs    fp0
  10722.     stfd    fp14,fi->regs.fp14            //    save FP regs
  10723.     stfd    fp15,fi->regs.fp15
  10724.     stfd    fp16,fi->regs.fp16
  10725.     stfd    fp17,fi->regs.fp17
  10726.     stfd    fp18,fi->regs.fp18
  10727.     stfd    fp19,fi->regs.fp19
  10728.     stfd    fp20,fi->regs.fp20
  10729.     stfd    fp21,fi->regs.fp21
  10730.     stfd    fp22,fi->regs.fp22
  10731.     stfd    fp23,fi->regs.fp23
  10732.     stfd    fp24,fi->regs.fp24
  10733.     stfd    fp25,fi->regs.fp25
  10734.     stfd    fp26,fi->regs.fp26
  10735.     stfd    fp27,fi->regs.fp27
  10736.     stfd    fp28,fi->regs.fp28
  10737.     stfd    fp29,fi->regs.fp29
  10738.     stfd    fp30,fi->regs.fp30
  10739.     stfd    fp31,fi->regs.fp31
  10740.     stfd    fp0, fi->regs.fpscr            //    save FPSCR
  10741.  
  10742.     li        r7,0
  10743.     stw        r4,fi->handlerProc            // fi->handlerProc = Handler;
  10744.     li        r8,1
  10745.     lwz        r4,gTopHandler(RTOC)
  10746.     stw        r7,fi->A6Link                // fi->A6Link = 0;
  10747.     li        r9,2
  10748.     stb        r8,fi->fPropagate            // fi->fPropagate = true;
  10749.     lwz        r5,0(r4)
  10750.     stb        r9,fi->handlerType            // fi->handlerType = kCatchFailure;
  10751.     stw        r5,fi->next                    // fi->next = gTopHandler;
  10752.     stw        r3,0(r4)                    // gTopHandler = fi;
  10753.  
  10754.     blr
  10755. }
  10756. #endif
  10757. z509,cw_gluePPC.c
  10758. #include <MixedMode.h>
  10759.  
  10760. pascal void BuildRoutineDescriptor(
  10761.                     RoutineDescriptorPtr aDescriptor,
  10762.                     ProcInfoType         procInfo,
  10763.                     ProcPtr                 theProc);
  10764.  
  10765. pascal void BuildRoutineDescriptor(
  10766.                     RoutineDescriptorPtr aDescriptor,
  10767.                     ProcInfoType         procInfo,
  10768.                     ProcPtr                 theProc)
  10769. {
  10770. RoutineDescriptor tempDescriptor = BUILD_ROUTINE_DESCRIPTOR(0,NULL);
  10771.  
  10772.     tempDescriptor.routineRecords[0].procInfo = procInfo;
  10773.     tempDescriptor.routineRecords[0].procDescriptor = theProc;
  10774.     *aDescriptor = tempDescriptor;
  10775. }
  10776. z9730,MethTableUtils.p
  10777. unit MethTableUtils;
  10778.  
  10779. interface
  10780.  
  10781.     uses
  10782.         TCL;
  10783.     {    Initialize this unit: order the method tables.    }
  10784.     procedure InitMethTableUtils;
  10785.  
  10786.     {    Given a class name, instantiate an object of that class. Return NIL if unknown class name or failed allocation    }
  10787.     function NewByName (className: Str255): LongInt;
  10788.         { Creates an object of the given class name }
  10789.  
  10790.     function ClassName (obj: univ LongInt): Str255;
  10791.  
  10792. implementation
  10793.  
  10794. {--------------------------------------------------------------------------------------------------}
  10795.  
  10796.     const
  10797.         NoClass = 0;
  10798.  
  10799.     type
  10800. {$IFC MWERKS}
  10801.         ClassID = Longint;
  10802.         SuperClassTableSize = ClassID;                    { in 32 B-E is a longint else int}
  10803.         SuperClassTable     = RECORD
  10804.             itsSize:            SuperClassTableSize;
  10805.             itsTable:            ARRAY [1..1] OF ClassID; { Actually, a variable size array where each
  10806.                                                              entry's byte offset corresponds to its
  10807.                                                              ClassID and the entry's value is the
  10808.                                                              ClassID of the immediate superclass }
  10809.             END;
  10810.         SuperClassTablePtr    = ^SuperClassTable;
  10811.         SuperClassTableHandle = ^SuperClassTablePtr;
  10812.  
  10813.         ClassInfoProc        = RECORD
  10814.             parentClassID:         ClassID;
  10815.             itsInstanceSize:    LONGINT;
  10816.             itsNameOff:            INTEGER;
  10817.             END;
  10818.         ClassInfoProcPtr    = ^ClassInfoProc;
  10819.         ClassInfoProcHandle = ^ClassInfoProcPtr;
  10820.         
  10821. {$ELSEC}
  10822. {$IFC OPTION(FARCODE)}
  10823.         ClassID = NoClass..$7FFFFFFF;
  10824. {$ELSEC}
  10825.         ClassID = NoClass..32766;
  10826. {$ENDC}
  10827. {$ENDC}
  10828.  
  10829.         PClassID = ^ClassID;
  10830.         HClassID = ^PClassID;
  10831.  
  10832.         HClassIdTable = ^PClassIdTable;
  10833.         PClassIdTable = ^ClassIdTable;
  10834.         ClassIdTable = array[1..16000] of ClassID; { Actually variable size }
  10835.  
  10836. {--------------------------------------------------------------------------------------------------}
  10837.  
  10838.     var
  10839.         pNoOfOrderedClasses: INTEGER;
  10840.         pOrderedClassIds: HClassIdTable;
  10841.         pClassTable: Handle;                             {handle to class table}
  10842.         pTObjectClassID: ClassID;                     {ClassID of the Root class}
  10843.  
  10844.     function GetClassID (obj: univ HClassID): ClassID;
  10845. { Given an object, return the object's ClassID. }
  10846.  
  10847.     begin
  10848.         GetClassID := obj^^;
  10849.     end;
  10850.  
  10851.     procedure UpperCaseName (var s: Str255);
  10852.         var
  10853.             i: Integer;
  10854.  
  10855.     begin
  10856.         for i := 1 to Length(s) do
  10857.             s[i] := Chr(BAND(Ord(s[i]), $DF));
  10858.     end;
  10859.  
  10860. {$IFC MAC68K}
  10861.     function _GetA5: LongInt;
  10862.     inline
  10863.         $2E8D;
  10864. {$ENDC}
  10865.  
  10866. {--------------------------------------------------------------------------------------------------}
  10867.  
  10868.     procedure GetClassNameFromID (class: ClassID; var clName: Str255);
  10869. { Given an object id, return the object's name.  ??? add error checking ??? }
  10870.  
  10871.         var
  10872.             classPtr: Ptr;
  10873.  
  10874.     begin
  10875. {$IFC MWERKS}
  10876.         if class = NoClass then
  10877.             clName := ''
  10878.         else
  10879.             clName := StringPtr(class + ClassInfoProcPtr(class)^.itsNameOff)^;
  10880. {$ELSEC}
  10881.         if (class = NoClass) | ODD(class) then
  10882.             clName := ''
  10883.         else
  10884.             begin
  10885. {$IFC NOT Option(FarCode)}
  10886.                 classPtr := Ptr(LongIntPtr(class + _GetA5 + 2)^);
  10887.                 clName := StringPtr(Ord(classPtr) + 8 + IntegerPtr(Ord(classPtr) + 6)^ * 4)^;
  10888. {$ELSEC}
  10889.                 classPtr := Pointer(LongIntPtr(class + 2)^);
  10890.                 clName := StringPtr(Ord4(classPtr) + 12 + IntegerPtr(Ord4(classPtr) + 10)^ * 8)^;
  10891. {$ENDC}
  10892.             end;
  10893. {$ENDC}
  10894.     end;
  10895.  
  10896. {--------------------------------------------------------------------------------------------------}
  10897.  
  10898.     function GetClassIDFromName (clName: Str255): ClassID;
  10899. { Given an object name, return its id. }
  10900.  
  10901.         var
  10902.             high, low, index: INTEGER;
  10903.             nameFromTable: Str255;
  10904.             compareResult: INTEGER;
  10905.             id: ClassID;
  10906.  
  10907.     begin
  10908.         UpperCaseName(clName);
  10909.  
  10910.         if pNoOfOrderedClasses > 0 then
  10911.             begin
  10912.                 low := 1;
  10913.                 high := pNoOfOrderedClasses;
  10914.                 repeat
  10915.                     index := BSR(low + high, 1);                { (low + high) DIV 2 }
  10916.                     id := pOrderedClassIds^^[index];
  10917.                     GetClassNameFromID(id, nameFromTable);
  10918.                     UpperCaseName(nameFromTable);
  10919.  
  10920.                     compareResult := RelString(clName, nameFromTable, TRUE, TRUE);
  10921.                     if compareResult = 0 then
  10922.                         begin
  10923.                             GetClassIDFromName := id;
  10924.                             EXIT(GetClassIDFromName);
  10925.                         end;
  10926.  
  10927.                     if compareResult < 0 then
  10928.                         high := index - 1
  10929.                     else
  10930.                         low := index + 1;
  10931.                 until low > high;
  10932.             end;
  10933.  
  10934.         GetClassIDFromName := NoClass;
  10935.     end;
  10936.  
  10937. {--------------------------------------------------------------------------------------------------}
  10938.     function GetClassSizeFromID (class: ClassID): Size;
  10939. { Given an object id, return the class's instantiation size. }
  10940.  
  10941.     begin
  10942. {$IFC MWERKS}
  10943.         GetClassSizeFromId := ClassInfoProcPtr(class)^.itsInstanceSize;
  10944. {$ELSEC}
  10945. {$IFC Not Option(FarCode)}
  10946.         GetClassSizeFromID := IntegerPtr(LongIntPtr(class + _GetA5 + 2)^ + 4)^;
  10947. {$ELSEC}
  10948.         GetClassSizeFromID := IntegerPtr(LongIntPtr(class + 2)^ + 8)^;
  10949. {$ENDC}
  10950. {$ENDC}
  10951.     end;
  10952.  
  10953. {--------------------------------------------------------------------------------------------------}
  10954.  
  10955.     procedure OrderClassIdsByName;
  10956.         var
  10957.             aClassName: Str255;
  10958.             nameFromTable: Str255;
  10959.             high, low, index: INTEGER;
  10960.             id: ClassID;
  10961.             tableSize, tableCount: INTEGER;
  10962.  
  10963.     begin
  10964.         pNoOfOrderedClasses := 0;
  10965.  
  10966. { pClassTable is a handle to the %_MethTables segment, which contains Class Info Procs laid}
  10967. { out sequentially, plus the %_InitObj routine which is just an RTS.  We can go through all}
  10968. { jump table entries for the segment and if the routine is *not* an RTS, we know it is a}
  10969. { Class Info Proc - the name is at the end of the method list.}
  10970.  
  10971. {$IFC MWERKS}
  10972. {$IFC CW8COMP}
  10973.         tableSize := SuperClassTableHandle(pClassTable)^^.itsSize DIV sizeof(ClassID) - 1;
  10974. {$ELSEC}
  10975.         tableSize := SuperClassTablePtr(pClassTable)^.itsSize DIV sizeof(ClassID);
  10976. {$ENDC}
  10977.         id := sizeof(ClassID);
  10978. {$ELSEC}
  10979.         tableSize := IntegerPtr(Ord(pClassTable^) + 2)^;         {# of jump table entries in %_MethTables segment}
  10980. {$IFC Not Option(FarCode)}
  10981.         id := 34 + IntegerPtr(pClassTable^)^;                    {offset to first jump table entry in %_MethTables segment}
  10982. {$ELSEC}
  10983.         id := 34 + (Ord4(IntegerPtr(pClassTable^)^) * 8);
  10984. {$ENDC}
  10985. {$ENDC}
  10986.  
  10987.         pOrderedClassIds := HClassIdTable(NewHandle(tableSize * Sizeof(ClassID)));
  10988.         {FailNIL(pOrderedClassIds);}
  10989.  
  10990.         for tableCount := 1 to tableSize do
  10991.             begin
  10992.             { make sure this is a real Class Info Proc and not the %_InitObj routine }
  10993. {$IFC MWERKS}
  10994. {$IFC CW8COMP}
  10995.                 IF SuperClassTableHandle(pClassTable)^^.itsTable[id DIV sizeof(ClassId)] <> 0 THEN
  10996. {$ELSEC}
  10997.                 IF SuperClassTablePtr(pClassTable)^.itsTable[id DIV sizeof(ClassId)] <> 0 THEN
  10998. {$ENDC}
  10999. {$ELSEC}
  11000.                 if IntegerPtr(LongIntPtr(_GetA5 + 2 + id)^)^ <> $4E75 then
  11001. {$ENDC}
  11002.                     begin
  11003. {$IFC MWERKS}
  11004. {$IFC CW8COMP}
  11005.                         GetClassNameFromID(SuperClassTableHandle(pClassTable)^^.itsTable[id DIV sizeof(ClassId)], aClassName);
  11006. {$ELSEC}
  11007.                         GetClassNameFromID(SuperClassTablePtr(pClassTable)^.itsTable[id DIV sizeof(ClassId)], aClassName);
  11008. {$ENDC}
  11009. {$ELSEC}
  11010. {$IFC Not Option(FarCode)}
  11011.                         GetClassNameFromID(ClassID(id), aClassName);
  11012. {$ELSEC}
  11013.                         GetClassNameFromID(ClassID(id + %_GetA5), aClassName);
  11014. {$ENDC}
  11015. {$ENDC}
  11016.  
  11017.                         if pNoOfOrderedClasses = 0 then
  11018.                             index := 1
  11019.                         else
  11020.                             begin
  11021.                                 low := 1;
  11022.                                 high := pNoOfOrderedClasses;
  11023.                                 repeat
  11024.                                     index := BSR(low + high, 1);        { (low + high) DIV 2 }
  11025.                                     GetClassNameFromID(pOrderedClassIds^^[index], nameFromTable);
  11026.                                     UpperCaseName(nameFromTable);
  11027.                                     if aClassName < nameFromTable then
  11028.                                         high := index - 1
  11029.                                     else
  11030.                                         begin
  11031.                                             low := index + 1;
  11032.                                             index := index + 1;
  11033.                                         end;
  11034.                                 until low > high;
  11035.                             end;
  11036.  
  11037.                         if index <= pNoOfOrderedClasses then
  11038.                             BlockMove(@pOrderedClassIds^^[index], @pOrderedClassIds^^[index + 1], (pNoOfOrderedClasses - index + 1) * sizeof(ClassID));
  11039. {$IFC MWERKS}
  11040. {$IFC CW8COMP}
  11041.                         pOrderedClassIds^^[index] := SuperClassTableHandle(pClassTable)^^.itsTable[id DIV sizeof(ClassId)];
  11042. {$ELSEC}
  11043.                         pOrderedClassIds^^[index] := SuperClassTablePtr(pClassTable)^.itsTable[id DIV sizeof(ClassId)];
  11044. {$ENDC}
  11045. {$ELSEC}
  11046. {$IFC Option(FarCode)}
  11047.                         pOrderedClassIDs^^[index] := pOrderedClassIDs^^[index] + %_GetA5;
  11048. {$ELSEC}
  11049.                         pOrderedClassIds^^[index] := id;
  11050. {$ENDC}
  11051. {$ENDC}
  11052.                         pNoOfOrderedClasses := pNoOfOrderedClasses + 1;
  11053.                     end;
  11054.  
  11055.             { go on to next class ID (jump table entry offset + 2) }
  11056. {$IFC MWERKS}
  11057.                 id := id + sizeof(ClassId);
  11058. {$ELSEC}
  11059.                 id := id + 8;
  11060. {$ENDC}
  11061.             end;
  11062.     end;
  11063.  
  11064. {$IFC NOT MWERKS}
  11065. { This routine is only present to force the Segment Loader to load the %_MethTables.}
  11066. { It had better be the only non-Class Info Proc in that segment!}
  11067.     procedure _InitObj;
  11068.     external;
  11069. {$ELSEC}
  11070. VAR
  11071.     {$J+}
  11072. {$IFC CW8COMP}
  11073.     __classInfo : Handle;
  11074. {$ELSEC}
  11075.     __classinfo__ : Ptr;
  11076. {$ENDC}
  11077.     {$J-}
  11078. {$ENDC}
  11079.  
  11080. { Essential one time initialization for this unit }
  11081.     procedure InitMethTableUtils;
  11082.     begin
  11083.     { Force the %_MethTables segment to be loaded and locked }
  11084. {$IFC NOT MWERKS}
  11085.         _InitObj;
  11086.  
  11087.     { Obtain the handle to the Class Info Procs }
  11088.         pClassTable := GetNamedResource('CODE', '%_MethTables');
  11089.  
  11090. {$ELSEC}
  11091. {$IFC CW8COMP}
  11092.         pClassTable := __classinfo;
  11093.         HLockHi(pClassTable);
  11094. {$ELSEC}
  11095.         pClassTable := @__classinfo__;
  11096. {$ENDC}
  11097. {$ENDC}
  11098.     {    Sort the class IDs so that we can efficiently search them later.    }
  11099.         OrderClassIdsByName;
  11100.     end;
  11101.  
  11102.     function MakeNewInstance (class: ClassID): Handle;
  11103.         var
  11104.             itsSize: INTEGER;
  11105.             obj: Handle;
  11106.  
  11107.     begin
  11108.         MakeNewInstance := nil;
  11109.         if class <> 0 then
  11110.             begin
  11111.                 obj := NewHandleClear(GetClassSizeFromID(class));
  11112.  
  11113.                 if obj <> nil then
  11114.             { Install class ID into object }
  11115.                     HClassID(obj)^^ := class;
  11116.  
  11117.                 MakeNewInstance := obj;
  11118.             end;
  11119.     end;
  11120.  
  11121. {--------------------------------------------------------------------------------------------------}
  11122.  
  11123.     function NewByName (className: Str255): LongInt;
  11124. { Creates an object of the given class name }
  11125.  
  11126.     begin
  11127.         NewByName := Ord4(MakeNewInstance(GetClassIDFromName(className)));
  11128.     end;
  11129.  
  11130.     function ClassName (obj: univ LongInt): Str255;
  11131.         var
  11132.             s: Str255;
  11133.  
  11134.     begin
  11135.         if (obj = 0) or Odd(obj) then
  11136.             s := ''
  11137.         else
  11138.             GetClassNameFromID(HClassID(obj)^^, s);
  11139.  
  11140.         ClassName := s;
  11141.     end;
  11142.  
  11143. end. {UObject.p}z120,TCL.prefix
  11144. {$SETC DebugExceptions = FALSE}
  11145. {$SETC TCL_DEBUG = FALSE}
  11146. {$SETC ResumeAfterError = TRUE}
  11147. {$SETC CW8COMP = FALSE}
  11148. {$%+}
  11149. o
  11150. o
  11151.